Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么System.out.println(“\t”和“x2B”scanner.next());给出错误?_Java_Java.util.scanner_Println - Fatal编程技术网

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)
在这里似乎更合适。啊,我明白了!谢谢所有帮助我的人^_^