Java扫描程序无法与nextByte()一起使用

Java扫描程序无法与nextByte()一起使用,java,Java,nextByte的JavaDoc说: 如果下一个标记与上面定义的整数正则表达式匹配 然后将令牌转换为字节值 所以它期望整数标记作为字符串,然后转换为字节。请尝试使用next()方法将令牌作为字符串获取。然后,您可以自己将字符转换为字节。java.util.Scanner用于扫描文本 因此,当您调用Scanner#nextByte()时,它真正希望找到的是数字的文本表示。例如,如果有“98”而不是“b”,它会将98读入该字节变量。扫描仪用于解析文本,该方法尝试匹配由数字组成的输入(有符号或无符号)

nextByte的JavaDoc说:

如果下一个标记与上面定义的整数正则表达式匹配 然后将令牌转换为字节值


所以它期望整数标记作为字符串,然后转换为字节。请尝试使用next()方法将令牌作为字符串获取。然后,您可以自己将字符转换为字节。

java.util.Scanner
用于扫描文本


因此,当您调用
Scanner#nextByte()
时,它真正希望找到的是数字的文本表示。例如,如果有“98”而不是“b”,它会将98读入该字节变量。

扫描仪用于解析文本,该方法尝试匹配由数字组成的输入(有符号或无符号),以将其转换为等效的单字节值

不是相反,它不会读取字母并返回其字节值。

如果您想知道扫描器试图匹配什么,请查看方法
hasNextByte()
(检查是否可以读取字节)。它尝试匹配此模式:

(3)p \40404040[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[3-++++]]]]以及[[[[[[[[[[[[3[3[3[2012[3[2012[3[3[01234540404040404040405[3[3[01234545677 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7(i)[0123456789]|\p{javaDigit})(i)[0123456789]|\p{javaDigit})(i)[0123456789]|\p{javaDigit})(i)[012345456789[012345456789[012345456789[012345456789[2012 3453456789[[[2012年3453453456789[0{{{Java数字}})以及\404040[2012 3453456789[012345456789[012345456789[012345345456789[[012345456789[3\\\p{{{{{{{}}}})上述上述[[[[[3]以及以及[[[[[3]以及[[3]以及以及[3[3]上述上述上述上述上述[[[[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[3[5[5{javaDigit}+)”


因此,您可以看到它只查找数字。

您的问题是什么?异常是什么?它可能会抛出一个
输入不匹配异常
,是吗?
Scanner Sc = new Scanner(new File("Input.bin"));
String s = Sc.nextLine();
fsize = Integer.parseInt(s); // Reads 4

s = Sc.nextLine();
int mapSize = Integer.parseInt(s);     // Reads 3 
for (int i = 0; i < mapSize; i++)
{
    byte value = 0;
    value = Sc.nextByte();  // Here it is throwing the exception it should have
                            // print the ascii of 'b' which is 98????

    String key = Sc.nextLine();
    key = key.trim();

    dcMap.put(key, (char)value);
 // System.out.println(key + " " + (char)value);
}
4
3
b 0
c 10
a 11