java.util.NoSuchElementException即使输入文件有数据

时间:2012-08-16 18:09:33

标签: java

我已编写此代码以找出输出,并且我在servlet中使用Runtime运行它。它显示了java.util.NoSuchElementEception,即使我已经检查过输入文件有一些数据:

public class Sec1q10 {

static int fact(int n) {
    int p = 1;
    if (n != 1) {
        p = n * fact(n - 1);
    }
    return p;
}

public static void main(String args[]) {
    try {
        System.out.println("first");
        Scanner in = new Scanner(new FileReader("F:/sem5/algorithm/in.txt"));
        String no = in.next();
        int n = Integer.parseInt(no);
        System.out.println(n);
        int s = 0;
        while (n != 0) {
            s += fact(n);
            n--;
        }
        System.out.println("sum=" + s);
        String s1 = "" + s + "here";

        PrintWriter out;
        System.out.println(s1);
        out = new PrintWriter("F:/sem5/algorithm/out.txt");

        out.write(s1);
        System.out.println(s1);

    } catch (Exception ex) {
        System.out.println("Exception: " + ex);
    }

}
}

我甚至在cmd上运行它,它显示输出而没有任何异常,但没有在文件F中写任何内容:/sem5/algorithm/out.txt

3 个答案:

答案 0 :(得分:0)

每当您使用Scanner类时,您应该进行实际测试以确保在尝试使用hasNextXXXXX()方法读取之前输入正在等待您。

试试这个:

String no; 

while(in.hasNext())
{
    no = in.next();

    //.....
}

问题不在于您的输入文件没有任何数据,而是您的输入文件因数据不断读取而耗尽数据。如果您在没有任何内容时尝试阅读,您将获得NoSuchElementException

答案 1 :(得分:0)

我能想到的只是目录不存在。你确定吗?如果没有,您应该手动创建,或使用.mkdir()功能

答案 2 :(得分:0)

在输入文件后,查看输出文件中的结果是否为PrintWriter

    PrintWriter out;
    System.out.println(s1);
    out = new PrintWriter("F:/sem5/algorithm/out.txt");
    try
    {
       out.write(s1);
       System.out.println(s1);
    }
    finally
    {
       out.close();
    }