Scanner의 등장과 Random 사용법

소정·2023년 1월 19일
0

Java

목록 보기
5/23
post-custom-banner

System in 이 아닌 Scanner 쓰는 이유

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의 값비교 함수 사용


Random 클래스

자료형별로 랜덤값을 생성하는 아이
랜덤한 값을 만들어내는 능력(기능)을 가진 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클래스가 사용하기 좋다

profile
보조기억장치
post-custom-banner

0개의 댓글