2014-06-08 5 views
1
  String si = "asd"; 
      Scanner sc = new Scanner(si); 
      byte d = sc.nextByte(); 

작동하지 않습니다.스캐너는 스캐너 (문자열 문자열) 생성자에 대한 문서에서

이 코드는 InputMismatchException로 인해 손상됩니다. 내가 뭘 잘못 했니?

+0

스택 추적을 확인할 수 있습니까? –

+0

왜 당신이''byte [] bytes = sc.next(). getBytes(); ''를 시도하지 않는가? – Braj

+0

http://stackoverflow.com/questions/2039229/using-java-util-scanner-to-read-a -file-byte-by-byte –

답변

2

먼저 Java에서 byte의 범위가 [-128, 127]임을 알아야합니다.

지금, 자바 문서는 nextByte() method (강조 광산)에 따라 :

예외 : InputMismatchException - 다음 토큰은 정수를 정규 표현식과 일치하지 않는 경우, 또는 범위

벗어

따라서 String에서 [-128, 127] 범위의 숫자를 읽어야합니다. 그렇지 않으면 해당 예외가 throw됩니다.

당신이 될 것입니다 사용하는 방법의 예 :

String si = "-128"; 
Scanner sc = new Scanner(si); 
byte d = sc.nextByte(); 
System.out.println(d); // -128 

편집 :

: 하나의 간단한 해결책은 String의 문자에 액세스 할 수 배열 char[]로 변환하는 것입니다
char[] chars = si.toCharArray(); 
System.out.println(chars[index]); 
3

Scanner.nextByte()은 문자열에서 다음 사용 가능한 바이트를 읽습니다. byte은 숫자 값이며 문자열에서 볼 수 있듯이 문자 만 포함되어 있습니다. -20이 허용 byte 때문에,

String si = "-20 asd"; 
Scanner sc = new Scanner(si); 
byte d = sc.nextByte(); 

그것은 작동하고, 마지막 줄 d-20를 개최한다 : 사실

당신과 함께하려고합니다.

당신이 당신의 문자열의 바이트 표현을 얻고 싶은 경우에, 다만

byte[] bytes = sc.next().getBytes(); 

또는

byte[] bytes = si.getBytes(); 
관련 문제