Wrapper 클래스
: 기본 데이터 형 값을 클래스로 포장 (지역변수를 클래스로 감싸서 Heap으로 보낸다)
: java.lang 의 Boolean, Byte, Character, Short, Integer, Lnng ... (교안참고) 통틀어서 Wrapper클래스라고 말한다
.parseInt ....... 많이 쓴다
#
package java_0731;
public class WrapTest {
public static void main(String[] args) {
int a = 10;
Integer i = new Integer(a);
int b = i.intValue();
System.out.println(b);
String num = "20";
System.out.println(b+num);
Integer i2 = new Integer(num);
int d = i2.intValue();
System.out.println(b+d);
}
}
결과
>
10
1020
30
#########################
<날씨>
StringTokenizer : 문자형 자르기
Integer : 문자를 정수로 바꿔주기
클래스 이용하기
#메인
package java_0731;
import java.util.StringTokenizer;
public class Wea {
/*
String num = "20";
System.out.println(b+num);
Integer i2 = new Integer(num);
int d = i2.intValue();
*/
public static void main (String [] args){
String w = "서울 비 23 90 서풍 대전 비 30 80 북서풍 대구 눈 32 50 북풍 부산 흐림 28 80 남서풍 제주도 맑음 18 75 서풍";
StringTokenizer st = new StringTokenizer(w, " ");
Integer i = null;
while(st.hasMoreTokens()){
Weather w2 = new Weather();
w2.setCity(st.nextToken());
w2.setNalssi(st.nextToken());
i = new Integer(st.nextToken());
w2.setGion(i.intValue());
i = new Integer(st.nextToken());
w2.setHumanity(i.intValue());
w2.setDirect(st.nextToken());
w2.info();
}
}
}
###
package java_0731;
public class Weather {
private String city;//도시명
private int gion;//현재온도
private int humanity;//현재습도
private String nalssi;//현재 날씨
private String direct;//현재 풍향
public void info(){
System.out.println("도 시 명:"+this.city);
System.out.println("현재온도:"+this.gion);
System.out.println("현재습도:"+this.humanity);
System.out.println("날 씨:"+this.nalssi);
System.out.println("풍 향:"+this.direct);
}
//멤버변수가 private으로 선언되어 있으므로 다른 클래스에서 사용하기위해서
//메소드를 사용한다 ( source > generate getter and setter )
public void setCity(String city) {
this.city = city;
}
public void setGion(int gion) {
this.gion = gion;
}
public void setHumanity(int humanity) {
this.humanity = humanity;
}
public void setNalssi(String nalssi) {
this.nalssi = nalssi;
}
public void setDirect(String direct) {
this.direct = direct;
}
}
<이런 식으로는 많이 안쓴다>
####################################
<다른 방법>
Integer 클래스의 parseInt 메소드사용
package java_0731;
import java.util.StringTokenizer;
public class Wea {
/*
String num = "20";
System.out.println(b+num);
Integer i2 = new Integer(num);
int d = i2.intValue();
*/
public static void main (String [] args){
String w = "서울 비 23 90 서풍 대전 비 30 80 북서풍 대구 눈 32 50 북풍 부산 흐림 28 80 남서풍 제주도 맑음 18 75 서풍";
StringTokenizer st = new StringTokenizer(w, " ");
while(st.hasMoreTokens()){
Weather w2 = new Weather();
w2.setCity(st.nextToken());
w2.setNalssi(st.nextToken());
w2.setGion(Integer.parseInt(st.nextToken()));
w2.setHumanity(Integer.parseInt(st.nextToken()));
w2.setDirect(st.nextToken());
w2.info();
}
}
}
################################################
package java_0731;
public class WrapTest {
public static void main(String[] args) {
int a = 10;
//Integer i = new Integer(a);
//이 방법 말고 다른 방법을 사용.
Integer i = a;
//주소값을 넣는 자리에 정수를 넣었다.
//오토박싱, 오토언박싱(교안참고)
//스택영역->힙영역:박싱
//스택영역<-힙영역:언박싱
System.out.println(i);
}
}
결과
>
10
########################################
package java_0731;
public class WrapTest {
public static void main(String[] args) {
int a = 10;
Integer i = a;
System.out.println(i+10);
}
}
결과
>
20
###########################################
package java_0731;
public class WrapTest {
public static void main(String[] args) {
char a = 'a';
Integer i = (int)a; //형변환 char -> int
System.out.println(i);
}
}
###############################################3
String으로된 숫자를 int로 변환
package java_0731;
import java.util.Scanner;
import java.util.StringTokenizer;
public class WrapTest {
public static void main(String[] args) {
System.out.println("주민번호를 입력하세요.");
Scanner sc = new Scanner(System.in);
String num = sc.next();
StringTokenizer st = new StringTokenizer(num, "-");
char c = num.charAt(2);
String n1=st.nextToken();
Integer.parseInt(n1);
String n2=st.nextToken();
Integer.parseInt(n2);
//앞자리
n1.charAt(0);
n1.charAt(1);
n1.charAt(2);
n1.charAt(3);
n1.charAt(4);
n1.charAt(5);
int i1 =Integer.parseInt(String.valueOf(n1.charAt(0))) ;
int i2 =Integer.parseInt(String.valueOf(n1.charAt(1))) ;
int i3 =Integer.parseInt(String.valueOf(n1.charAt(2))) ;
int i4 =Integer.parseInt(String.valueOf(n1.charAt(3))) ;
int i5 =Integer.parseInt(String.valueOf(n1.charAt(4))) ;
int i6 =Integer.parseInt(String.valueOf(n1.charAt(5))) ;
//뒷자리
n2.charAt(0);
n2.charAt(1);
n2.charAt(2);
n2.charAt(3);
n2.charAt(4);
n2.charAt(5);
n2.charAt(6);
int i7 =Integer.parseInt(String.valueOf(n2.charAt(0))) ;
int i8 =Integer.parseInt(String.valueOf(n2.charAt(1))) ;
int i9 =Integer.parseInt(String.valueOf(n2.charAt(2))) ;
int i10 =Integer.parseInt(String.valueOf(n2.charAt(3))) ;
int i11 =Integer.parseInt(String.valueOf(n2.charAt(4))) ;
int i12 =Integer.parseInt(String.valueOf(n2.charAt(5))) ;
//끝자리비교
int i13 = Integer.parseInt(String.valueOf(n2.charAt(6)));
int sum = i1*2+i2*3+i3*4+i4*5+i5*6+i6*7+i7*8+i8*9+i9*2+i10*3+i11*4+i12*5;//합
int na = sum%11; //11로 나눈 나머지
int su = 11- na; // 11-나머지
if(su==i13){
System.out.println("올바른 번호입니다.");
}else{
System.out.println("잘못된 번호입니다.");
}
}
}
##
중복되는 부분은 for문으로 줄여보기
##########################################################
ArrayList
크기를 미리 안정해도 된다. 크기 증가/감소 가능
##############################
실습
package ArrayTest;
import java.util.ArrayList;
public class ArrTest {
public static void main(String[] args) {
ArrayList ar = new ArrayList<>();
ar.add(1); // 정수 1을 배열에 넣겠다 : 1칸생성
ar.add(3.12); // 실수 3.12를 배열에 넣는다 : 데이터타입이 달라도 삽입가능
ar.add('f'); // 문자열도 들어간다. char
ar.add("suji"); // 레퍼런스데이터타입도 들어간다.String
for(int i=0 ; i<4 ;i++){
System.out.println(ar.get(i));
}
}
}
결과
>
1
3.12
f
suji
###############################################
package ArrayTest;
import java.util.ArrayList;
public class ArrTest {
public static void main(String[] args) {
ArrayList ar = new ArrayList<>();
ar.add(1); // 정수 1을 배열에 넣겠다 : 1칸생성
ar.add(3.12); // 실수 3.12를 배열에 넣는다 : 데이터타입이 달라도 삽입가능
ar.add('f'); // 문자열도 들어간다. char
ar.add("suji"); // 레퍼런스데이터타입도 들어간다.String
for(int i=0 ; i< ar.size() ;i++){
System.out.println(ar.get(i));
}
}
}
결과
>
1
3.12
f
suji
###
size() 배열의 크기를 리턴받는 메소드
######################################
package ArrayTest;
import java.util.ArrayList;
public class ArrTest {
public static void main(String[] args) {
ArrayList ar = new ArrayList<>();
ar.add(1); // 정수 1을 배열에 넣겠다 : 1칸생성
ar.add(3.12); // 실수 3.12를 배열에 넣는다 : 데이터타입이 달라도 삽입가능
ar.add('f'); // 문자열도 들어간다. char
ar.add("suji"); // 레퍼런스데이터타입도 들어간다.String
ar.set(3, 72); //인덱스3번 값을 72로 바꾼다. (수정) "suji"->72
for(int i=0 ; i< ar.size() ;i++){
System.out.println(ar.get(i));
}
}
}
결과
>
1
3.12
f
72
set(인덱스번호, 바꿀값) : 수정하는 메소드
##########################################
package ArrayTest;
import java.util.ArrayList;
public class ArrTest {
public static void main(String[] args) {
ArrayList ar = new ArrayList<>();
ar.add(1); // 정수 1을 배열에 넣겠다 : 1칸생성
ar.add(3.12); // 실수 3.12를 배열에 넣는다 : 데이터타입이 달라도 삽입가능
ar.add('f'); // 문자열도 들어간다. char
ar.add("suji"); // 레퍼런스데이터타입도 들어간다.String
ar.set(3, 72); //인덱스3번 값을 72로 바꾼다. (수정) "suji"->72
ar.add(1, "iu");
for(int i=0 ; i< ar.size() ;i++){
System.out.println(ar.get(i));
}
}
}
결과
>
1
iu
3.12
f
72
################################################
package ArrayTest;
import java.util.ArrayList;
public class ArrTest {
public static void main(String[] args) {
ArrayList ar = new ArrayList<>();
ar.add(1); // 정수 1을 배열에 넣겠다 : 1칸생성
ar.add(3.12); // 실수 3.12를 배열에 넣는다 : 데이터타입이 달라도 삽입가능
ar.add('f'); // 문자열도 들어간다. char
ar.add("suji"); // 레퍼런스데이터타입도 들어간다.String
ar.set(3, 72); //인덱스3번 값을 72로 바꾼다. (수정) "suji"->72
ar.add(1, "iu");
ar.remove(3);
for(int i=0 ; i< ar.size() ;i++){
System.out.println(ar.get(i));
}
}
}
결과
>
1
iu
3.12
72
# 인덱스3번 값 삭제 , 'f' 를 지운다
######################################
package ArrayTest;
import java.util.ArrayList;
public class ArrTest {
public static void main(String[] args) {
ArrayList ar = new ArrayList<>();
ar.add(1); //Integer 클래스타입
ar.add(3.12); //Double 클래스타입
ar.add('f'); //Character 클래스타입
ar.add("suji"); //String 클래스타입
/*
int a = ar.get(0);
double b = ar.get(1);
char c = ar.get(2);
*/
//프린트는 되지만 주석안처럼 값을 넣는 것은 안된다.
}
}
해결책 형변환
package ArrayTest;
import java.util.ArrayList;
public class ArrTest {
public static void main(String[] args) {
ArrayList ar = new ArrayList<>();
ar.add(1); //Integer 클래스타입 // 정수 1을 배열에 넣겠다 : 1칸생성
ar.add(3.12); //Double 클래스타입// 실수 3.12를 배열에 넣는다 : 데이터타입이 달라도 삽입가능
ar.add('f'); //Character 클래스타입// 문자열도 들어간다. char
ar.add("suji"); //String 클래스타입// 레퍼런스데이터타입도 들어간다.String
int a = (Integer)ar.get(0);
double b = (Double)ar.get(1);
char c = (Character)ar.get(2);
String d = (String)ar.get(3);
}
}
############################################
음식 5개 콤마 자르고 ; 그 중에 2개 선택
package ArrayTest;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
import java.util.StringTokenizer;
public class FoodMain {
public static void main(String[] args) {
String food = "치킨,19000,피자,20000,족발,30000,훈제오리,30000,삼겹살,18000";
//오늘 음식을 고르겠습니까?
//yes
//무작위로 2개 골라서
//음식명과 총가격 prtint();
StringTokenizer st = new StringTokenizer(food, ",");
Food [] far = new Food[5];
/*
int i=0;
while(st.hasMoreTokens()){
Food f = new Food();
f.name = st.nextToken();
f.price = Integer.parseInt( st.nextToken());
far[i]=f;
System.out.println(far[i].name);
System.out.println(far[i].price);
i++;
}
*/
ArrayList arl = new ArrayList<>();
for(int k=0 ; k<arl.size() ; k++){
Food f = new Food();
f.name = st.nextToken();
f.price = Integer.parseInt( st.nextToken());
arl.add(f.name);
arl.add(f.price);
}
System.out.println("음식을 고르시겠습니까?");
System.out.println("1.예 2.아니오");
Scanner sc = new Scanner(System.in);
int select = sc.nextInt();
if(select==1){
Random r = new Random();
r.nextInt(4);
}else{
System.out.println("종료");
}
}
}
###################3
#선생님 코드(주석안쪽은 내가해본거)
package ArrayTest;
import java.security.AllPermission;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
import java.util.StringTokenizer;
public class FoodMain {
public static void main(String[] args) {
String food = "치킨,19000,피자,20000,족발,30000,훈제오리,30000,삼겹살,18000";
//오늘 음식을 고르겠습니까?
//yes
//무작위로 2개 골라서
//음식명과 총가격 prtint();
StringTokenizer st = new StringTokenizer(food, ",");
ArrayList ar = new ArrayList<>();
Food f = null;
while(st.hasMoreTokens()){
f= new Food();
f.name = st.nextToken();
f.price = Integer.parseInt(st.nextToken());
ar.add(f);
}
//*****어레이 리스트 생성
System.out.println("음식 선택하시겠습니까? yes / no ");
Scanner sc = new Scanner(System.in);
String ans = sc.next();
if(ans.equals("yes")){
Random r = new Random();
int num = r.nextInt(ar.size());
Food fo = (Food)ar.get(num); //오브젝트 타입이므로 Food타입으로 형변환
System.out.println(fo.name);
System.out.println(fo.price);
}else{
System.out.println("종료");
}
/*
Food [] far = new Food[5];
int i=0;
while(st.hasMoreTokens()){
Food f = new Food();
f.name = st.nextToken();
f.price = Integer.parseInt( st.nextToken());
far[i]=f;
System.out.println(far[i].name);
System.out.println(far[i].price);
i++;
}
ArrayList arl = new ArrayList<>();
for(int k=0 ; k<arl.size() ; k++){
Food f = new Food();
f.name = st.nextToken();
f.price = Integer.parseInt( st.nextToken());
arl.add(f.name);
arl.add(f.price);
}
System.out.println("음식을 고르시겠습니까?");
System.out.println("1.예 2.아니오");
Scanner sc = new Scanner(System.in);
int select = sc.nextInt();
if(select==1){
Random r = new Random();
r.nextInt(4);
}else{
System.out.println("종료");
}
*/
}
}
#############################################
ArrayList arl = new ArrayList<>();
for(int k=0 ; k<arl.size() ; k++){
Food f = new Food();
f.name = st.nextToken();
f.price = Integer.parseInt( st.nextToken());
arl.add(f.name);
arl.add(f.price);
}
add로 name , price 두번씩 하면 사이즈도 2배로 해줘야 한다
arl.size()*2;
##############################################
1.
셰프
1.메뉴등록 2.가게오픈
1)메뉴명입력 > 다시입력
2)가격입력
1. 메뉴선택 2.주문완료
1)메뉴명이 모두 프린트
먹고싶은 메뉴명 입력
//메뉴명 입력 > 엔터치면 > 1.메뉴선택 2.주문완료
2)선택한메뉴명이 출력, 합계 프린트 > 종료
출력:프린트아웃
입력:스캐너
메뉴추가:어레이리스트
메뉴선택돌아가기 while
2.
게임만든거에 싸우는거 구현
기사가 먼저 때린다.
기사의 attack 메소드 안에는 매개변수 (Monster m)
오크의 attack 메소드
오거의 attack 메소드
메소드 안에 매개변수 (Knight k)
(+번외)
랜덤하게 하나의 item 잃어버림
이긴 놈이 item획득
'프로그래밍, 통계학 > Java Fundamental' 카테고리의 다른 글
[19일차]2015.08.04.화, 입출력 (0) | 2015.08.04 |
---|---|
[18일차]2015.08.03.월, 제네릭, 자주쓰는 클래스, Map,해쉬테이블 (0) | 2015.08.03 |
[16일차]2015.07.30.목, 자주사용하는 클래스 (0) | 2015.07.30 |
[15일차]2015.07.29.수, StringBuffer,StringTokenizer (0) | 2015.07.29 |
[14일차]2015.07.28, 라이브러리찾는법 (0) | 2015.07.28 |