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획득














































블로그 이미지

테시리

,