오류노트 - char Casting (형변환) & Scanner 버퍼

728x90

Scanner 버퍼 오류

Int입력 후 Enter키가 다음 scanner인 nextLine에 대입되어 원하는 String 값을 넣지 못하는 오류

		System.out.println("숫자를 입력");
		int i = scanner.nextInt();
		
		scanner.nextLine();
		
		System.out.println("글자를 입력");
		String s = scanner.nextLine();
		
//숫자를 입력
//3
//글자를 입력
  • 따라서 int값 이후의 enter를 저장해주기위해 빈 scanner를 하나 생성
  • 입력된 보이지 않는 enter값이 빈 scanner에 들어가고 원하는 값을 nextLine에 넣을 수 있었음

 


 

계산순서에 따른 Casting (형변환) 2 byte to 4 byte 오류

char을 int와 계산할때 2byte가 4byte로 자동형변환 되어 원하는 값이 나오지 않을 경우

	String Id = "8612141010100";
	if(Id.charAt(6) - 48 == 1 || Id.charAt(6) == 3 -'0');
  • 자동형변환은 값손실을 막기위하여 작은 값에서 큰 값으로 casting 됨
  • 따라서 원하는 int 값을 주기 위해서는 '0' 작은따옴표 안에 있는 0을 추가 즉 int값 48의 값을 마이너스 해줌
  • int 값 1 은 '49' 따라서 48값인 '0'을 빼줌으로서 우리가 아는 인트값 1을 출력

 

728x90