当前位置: 首页 > 知识库问答 >
问题:

java实用程序。NoSuchElementException:找不到行-扫描仪/PrintWriter问题

左丘耀
2023-03-14

我想使用csv和txt文件批量创建一些批处理脚本,运行时出现错误。我对代码进行了注释,所以您应该能够从这些注释中确定我的意图。我只是在这里写得更多,因为机器人要求我在发帖之前继续写更多的解释。一旦这个红色文本框消失,我将停止写作,你可以停止阅读。我真的希望你已经停止阅读了,因为这肯定会让我感到厌烦。我开始怀疑我是否应该开始一个新的段落。让我们看看这是否有帮助。

我有一种感觉,也许使用不同的语言会更合适,但我的经验主要限于java,我希望在继续之前使用这种语言变得更好。

线程“主”java.util.NoSuch元素异常:在打印机脚本创建器上找不到行(扫描仪.java:1540)。打印机脚本创建者主(打印机脚本创建者.java:29)

public class PrinterScriptCreator {  
    public static void main(String[] args) throws FileNotFoundException {
        File csvFile = new File("printers.csv");
        File txtFile = new File("xeroxTemplate.txt");
        Scanner csvScanner = new Scanner(csvFile);
        csvScanner.useDelimiter(",");
        Scanner txtScanner = new Scanner(txtFile);

        try{
            while(csvScanner.hasNext()){
                //create file with name from first csv cell
                File file = new File(csvScanner.next());
                //create FileWriter to populate the newly created file
                FileWriter fw = new FileWriter(file);
                //create PrintWriter to communicate with FileWriter
                PrintWriter pw = new PrintWriter(fw);
                //copy first 7 lines from xeroxTemplate.txt
                for(int i=0; i<7; i++){
                    pw.println(txtScanner.nextLine());
                }
                //copy the next three cells from CSV into new file
                for(int i=0; i<3; i++){
                    pw.println(csvScanner.next());
                }
                //copy remaining lines from TXT to the new file
                while(txtScanner.hasNextLine()){
                    pw.println(txtScanner.nextLine());
                }
            }  
        } catch (IOException ex) {
            System.out.printf("ERROR: %s\n", ex);
        }    
    }    
}

共有3个答案

羊舌光赫
2023-03-14

需要在while循环中创建txtScanner,以便在每次创建文件后重新创建它。否则它就没有台词了。

郑乐池
2023-03-14
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at printerscriptcreator.PrinterScriptCreator.main(PrinterScriptCreator.java:29)

这告诉你发生了什么。你的一个扫描仪试图拉下一条线,但它没有,所以它抛出了这个异常。

它告诉你PrinterScriptCreator.java:29。我没有你的粘贴的行号,但是检查一下第29行。那是哪一行?我猜是这一行:

for(int i=0; i<7; i++){
        pw.println(txtScanner.nextLine());
}

你试图拉7条线,但没有7条。因此,它会引发异常。

你可以尝试这样做

for(int i=0; i<7; i++){
    if(txtScanner.hasNextLine()){
            pw.println(txtScanner.nextLine());
    }
}

或者您可以尝试使用try-catch块来处理它。不管怎样,检查你的文件,确保它们有正确的数据。

后易安
2023-03-14

我注意到,你检查了下一个()一次,然后抓住下一个()三次。你可能应该在 for 循环中放置一个条件。

while(csvScanner.hasNext()){

    ...

        //copy the next three cells from CSV into new file
        for(int i=0; i<3; i++){
            pw.println(csvScanner.next());
        }
 类似资料:
  • 对不起,我的问题,但我是一个初学者。请你能支持与扫描仪相关的关心。 “背景”:我写了一些研究扫描仪的代码: 我有一个例外:找不到行。这就是我在输出中得到的结果: 任务:运行失败今天是哪一天?线程“main”java.util.NosuchelementException异常:在java.base/java.util.Scanner.NextLine(Scanner.java:1651)和demoo

  • 问题内容: 我的Java作业有问题。我遇到了意外的异常,特别是: java.util.NoSuchElementException:找不到行 我正在使用,该程序不断读取任何内容,并重复“无效格式”异常文本。如果输入正确的值,则第一部分通过,然后该部分立即进入此异常。如果输入的值不正确,则它将开始循环异常。 这是我的代码: 问题答案: 您关闭了多个库,这些库关闭了底层库,因此另一个库将不再从同一库和

  • 我对的体验非常糟糕,因为我使用的是和。所以我不能做扫描仪的程序。我是新手,所以请帮助我,“找不到”。这是我到目前为止的代码。

  • 我试图让一个扫描器读取文本文件的输入,将该输入放入一个字符串,为该字符串设置一个StringTokenizer,然后设置一个String[],该数组的每个元素都是该StringTokenizer的标记。这样做的目的是从文本文件中获取输入文本的String[],以便数组的每个元素都是文本文件中的一个单词。但是,到目前为止,我的代码生成了一个NoSuchElementFound异常。 为什么会发生这种

  • 问题内容: 如何将扫描仪的定界符设置为;或换行? 我试过: 但这不起作用。 问题答案: 通常,在模式中,您需要将翻倍。 所以,尝试 要么 编辑 :如果是问题,则可能要尝试以下操作: 它匹配的一个或多个,和。 注意 :我还没有尝试过这些。

  • 问题内容: 我正在尝试读取具有多个单词的字符串,即。洛杉矶或纽约市。如果有两个词并将它们分割在变量之间,则使用scanner.next()进行“出发”和“到达”只会读取第一个。nextLine()也不是很幸运。这是我的代码: 我知道这很简单,但我还没有弄清楚。 这是上面的代码的输入/输出: 输入航班号:29 输入出发城市:(立即跳至下一行) 输入到达城市: -—我真正想要的是---- 输入航班号: