String si = "asd";
Scanner sc = new Scanner(si);
byte d = sc.nextByte();
작동하지 않습니다.스캐너는 스캐너 (문자열 문자열) 생성자에 대한 문서에서
이 코드는 InputMismatchException로 인해 손상됩니다. 내가 뭘 잘못 했니?
String si = "asd";
Scanner sc = new Scanner(si);
byte d = sc.nextByte();
작동하지 않습니다.스캐너는 스캐너 (문자열 문자열) 생성자에 대한 문서에서
이 코드는 InputMismatchException로 인해 손상됩니다. 내가 뭘 잘못 했니?
먼저 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]);
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();
확인 JavaDoc for nextByte method을한다. 숫자가없는 문자열에서 바이트를 읽으려고합니다.
스택 추적을 확인할 수 있습니까? –
왜 당신이''byte [] bytes = sc.next(). getBytes(); ''를 시도하지 않는가? – Braj
http://stackoverflow.com/questions/2039229/using-java-util-scanner-to-read-a -file-byte-by-byte –