我试图分离三个整数并打印出每个整数,但是当我这样做时,会给我输入misMatchException:
if (ref $database{$a}{$b}{$c} ne 'HASH') {
print "not a hash\n";
}
elsif (exists $database{$a}{$b}{$c}{'d'}){
print "success!\n";
}
答案 0 :(得分:4)
这很可能是因为您输入的内容不正确-您可能正在尝试输入类似1, 2, 3
的内容。 不起作用,因为您的分隔符只是逗号,而不是逗号+空格。
编写代码的方式,您需要输入1,2,3,
,然后按Enter。
另外:请注意,您在public class blah
之后缺少左括号。
答案 1 :(得分:1)
要克服内联供稿,请使用scnr.useDelimiter("[ ,\\r\\n]");
答案 2 :(得分:1)
我认为您的输入看起来像这样
1,2,3[enter]
您将定界符设置为“,”-在这种情况下,扫描程序将寻找下一个逗号以完成下一个值的读取,但可以找到它。 您应该以这种形式输入值(必须使用逗号):
1,2,3,[enter]
您可以查看Scanner.reset()文档,以了解它们如何设置默认的空格分隔符:
scanner.useDelimiter("\\p{javaWhitespace}+")
现在,您可以创建将空格或逗号作为分隔符的模式(它使用竖线|在正则表达式中声明OR表示法):
scanner.useDelimiter(",|\\p{javaWhitespace}+")
此行接受:1,2,3,4 [输入] 有关更具体的输入-使用正则表达式。