Java 为什么System.out.println(“\t”和“x2B”scanner.next());给出错误?
我正在运行上面的代码,这样扫描行:Java 为什么System.out.println(“\t”和“x2B”scanner.next());给出错误?,java,java.util.scanner,println,Java,Java.util.scanner,Println,我正在运行上面的代码,这样扫描行: Willy Wonk,o,o,h,o,o,h,w,o,o,o,o,o,o,o,o,s,h,o,o,h,o,h,o,h 但是它会导致错误,除非我取出System.out.println() 它来自我的一个家庭作业,它不要求我有那个错误行,但我只是想知道是什么原因造成的,我应该如何修复它?您正在使用println中的下一个元素 sectionScan = new Scanner(wholeLine); sectionScan.useDelimiter(",");
Willy Wonk,o,o,h,o,o,h,w,o,o,o,o,o,o,o,o,s,h,o,o,h,o,h,o,h
但是它会导致错误,除非我取出System.out.println()代码>
它来自我的一个家庭作业,它不要求我有那个错误行,但我只是想知道是什么原因造成的,我应该如何修复它?您正在使用println中的下一个元素
sectionScan = new Scanner(wholeLine);
sectionScan.useDelimiter(",");
//Print each part of bat code
while (sectionScan.hasNext())
{
System.out.println("\t" + sectionScan.next());
score = sectionScan.next();
if ("h".equals(score))
hit++;
else if ("o".equals(score))
out++;
else if ("w".equals(score))
walk++;
else if ("s".equals(score))
sacrifice++;
}
而是将next()值存储一次并重用它
System.out.println("\t" + sectionScan.next());
执行println
时,实际上调用了next
方法两次,但在while条件下,如果还有元素,则只检查一次。因此,每次迭代都要检索两个元素。最后,当只剩下一个元素时,在第二次尝试调用方法next
时会出现异常
您应该只调用一次next
方法,并将值缓存在变量中,以后可以将其用于任何其他目的。尝试将其更改为
score = sectionScan.next();
System.out.println("\t" + score);
每次检查sectionscan.hasNext()时,都会调用sectionscan.next()两次,这意味着您最终会在没有下一个元素时调用.next() 当您使用sectionScan.next()时代码>,它将读取下一个
您可以获得如下所示的临时字符串:
score = sectionScan.next();
System.out.println("\t" + score);
String []score=wholeLine.split(",");
你可以用这个临时工做任何你想做的事
另一种解决方案是使用split
方法,如下所示:
String temp=sectionScan.next();
因此,您有一个被,
拆分的数组,因此您可以像这样通过该数组进行迭代:
score = sectionScan.next();
System.out.println("\t" + score);
String []score=wholeLine.split(",");
如果您告诉您收到的错误,帮助您可能会更容易。也许是一条消息?String#split(String)
在这里似乎更合适。啊,我明白了!谢谢所有帮助我的人^_^