System.in.read(); 는 한문자를 아스키값으로 리턴한다
문자 '0' 48번
read()를 숫자로서 계산하고 싶으면 0의 아스키번호 48을 뺴줘야함
int a;
//키보드로부터 입력 된 값을 받아서 리턴해 주는 기능을 가진 객체[System.in] 이용
try {
a = System.in.read(); //값을 입력 받는 친구
//read()는 아스키 값으로 바꿔 해석한다
System.out.println(a);
//입력받은 숫자에 50을 더해서 출력해 보기
System.out.println("덧셈결과 : "+ (a+50));
//입력받은 숫자에 '0'문자열 48을 뺀다
a = a-48; //숫자모양의 문자를 숫자로 변환 System.out.println("48뺀 덧셈결과 : "+ a);
} catch (IOException e) { //
e.printStackTrace();
}
//세자리의 숫자를 입력받고싶다면?
int num=0;
try {
int n;
n=System.in.read();
num = num + (n-48)*100;
n=System.in.read();
num = num + (n-48)*10;
n=System.in.read();
num = num + (n-48)*1;
System.out.println("num = "+ num);
} catch (IOException e) {
e.printStackTrace();
}
위의 방법이 너무 귀찮아서 나온 Scanner
Scanner => 아스키값을 원하는 자료형으로 변환시켜 값을 리턴해 주는 Class 친구
nextInt();
nexDouble();
nextBoolean();
문자열
next(); => 띄어쓰기 없는 것만 가능 (%s)
nextLine(); => 문장 가능 , enter 키 입력으로 받아드림
Scanner sc = new Scanner(System.in);
int b = sc.nextInt();
System.out.println(b);
=> ==와 equlse();
String 변수는 주소값을 가지고 있음 값을 직접 들고 있는 아이가 아님
String s1 = "Hello";
String s2 = "Hello";
System.out.println(s1==s2); //s1과 s2가 가진 주소값을 비교함
System.out.println(s1.equals(s2)); //s1과 s2의 값비교 함수 사용
자료형별로 랜덤값을 생성하는 아이
랜덤한 값을 만들어내는 능력(기능)을 가진 class : Random
nextInt();
nextDouble();
nextBoolean();
세가지 초이스 있다
Random rnd= new Random();
//랜덤한 정수값 얻어오기
int a;
a= rnd.nextInt(); // -21억 ~ 21억
System.out.println("a: " + a);
//0~9 10개의 숫자 중에 하나가 랜덤하게 나오도록..
int b;
b= rnd.nextInt(10);//괄호 안에 개수 제한
System.out.println("b: " + b);
//5~15 - 범위 제한
int d= rnd.nextInt(11) + 5;//+-로 시작위치를 설정한다
System.out.println("d: " + d);
Math.random() 과의 차이
메모리적으론 static인 Math.random()이 좋을 순 있지만 Math.random()은 nextDouble로만 나옴 개발자 편의성엔 Random클래스가 사용하기 좋다