【问题标题】:Cannot Read Next Console Line - NoSuchElementException无法读取下一个控制台行 - NoSuchElementException
【发布时间】:2019-03-13 22:49:54
【问题描述】:

这样做的想法是接受控制台输入并将其用作文本文件的文件名,以填充具有不同小数位的平方根值

但是我不能让它让我输入任何东西,它会抛出 NoSuchElementException 并且我不明白为什么?在以前的方法中,我使用这个确切的代码来获取文件名作为变量

这是当前方法

    private static void FileWritting () throws IOException  {
    System.out.println("\n6.7.2 Writting Data");
    System.out.println("-----------------------");
    System.out.println("Enter the File name");
    Scanner Scanner2 = new Scanner(System.in);
    String filename = Scanner2.nextLine();
    FileWriter writehandle = new FileWriter("D:\\Users\\Ali\\Documents\\lab6\\" + filename + ".txt");
       BufferedWriter bw = new BufferedWriter(writehandle);
    int n = 10;
       for(int i=1;i<n;++i)
       {
          double value = Math.sqrt(i);
          String formattedString = String.format("%."+ (i-1) +"f", value);
          System.out.println(formattedString);
       //  bw.write(line);
          bw.newLine();
       }
       bw.close();
       writehandle.close();
       Scanner2.close();
    }

这是以前的方法

System.out.println("6.7.1 Reading Data");
    System.out.println("-----------------------");
    System.out.println("Enter the File name");
    Scanner Scanner1 = new Scanner(System.in);
    String filename = Scanner1.nextLine();
       FileReader readhandle = new FileReader("D:\\Users\\Ali\\Documents\\lab6\\"+ filename +".txt");
       BufferedReader br = new BufferedReader(readhandle);
       String line = br.readLine ();
       int count = 0;
       while (line != null) {
          String []parts = line.split(" ");
          for( String w : parts)
          {
            count++;        
          }
          line = br.readLine();
       }         
       System.out.println("The number of words is: " + count);
       br.close();
       Scanner1.close();
}

【问题讨论】:

标签: java console readline nosuchelementexception


【解决方案1】:

您在第一种方法中调用Scanner#close。这会关闭标准输入,这使得读取它变得不可能。我建议创建一个全局变量来保存您的扫描仪并在程序终止时关闭它(而不是在每个方法中创建一个新变量)。

More info and a better explanation

【讨论】:

    猜你喜欢
    • 2020-05-25
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    相关资源
    最近更新 更多