有没有办法绕着扫描仪(Java)推进一条线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法绕着扫描仪(Java)推进一条线相关的知识,希望对你有一定的参考价值。

好的,所以我在扫描仪推进额外线路方面遇到了一些问题。我有一个文件,其中有许多行包含整数,每个整数由一个空格分隔。在文件的某个地方有一行没有整数,只有“完成”这个词。当找到完成后,我们退出循环并打印出最大的整数,该整数小于每行中的每个给定整数(如果整数已经为prime,则不执行任何操作)。我们一直这样做直到“完成”这一行。

我的问题:让我们说文件包含6行,在第6行是完成的单词。我的输出将跳过第1,3和5行。它只返回第2行和第4行的正确值。

这是一段代码,我在其中读取了以下值:

Scanner in = new Scanner(
                new InputStreamReader(socket.getInputStream()));
        PrintStream out = new PrintStream(socket.getOutputStream());

        while(in.nextLine() != "done"){


            String[] arr = in.nextLine().split(" "); 

现在我感觉问题是我的循环中的nextLine调用使行前进,然后nextline.split调用也使该行前进。因此,所有奇数行都将丢失。是否有另一种方法来检查“完成”而不提前行或是否有可能的命令我可以调用以某种方式将扫描仪重置回到循环的开始?

答案

问题是你有2次调用nextLine()尝试这样的事情

String line = in.nextLine();
while (!"done".equals(line)) {
     String[] arr = line.split(" ");

     // Process the line

     if (!in.hasNextLine()) {
         // Error reached end of file without finding done
     }

     line = in.nextLine();
}

另请注意我修复了"done"的检查,你应该使用equals()

另一答案

我想你正在寻找这个

while(in.hasNextLine()){
    String str  = in.nextLine();
    if(str.trim().equals("done"){
        break;
    }else{
        String[] arr = str.split("\s+");
        //then do whatever you want to do 

    }
}

以上是关于有没有办法绕着扫描仪(Java)推进一条线的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将2个非常相似的代码片段组合成一个函数并重复?

有没有办法从我的 Dialog 片段中的 Activity 调用方法?

NDK: ant 错误 [javah] Exception in thread "main" java.lang.NullPointerException 多种解决办法(代码片段

有没有办法使用相同的布局动态创建片段并向它们显示数据?

从JVM的角度看JAVA代码--代码优化

无法在片段中启动 qrCode 相机扫描仪