0

我编写了这段代码来找出输出,我正在使用运行时在 servlet 中运行它。即使我检查了输入文件有一些数据,它也会显示 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 中写入任何内容

4

3 回答 3

0

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

于 2012-08-16T19:09:46.617 回答
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();
    }
于 2012-08-16T19:51:43.743 回答
0

每当您使用Scanner该类时,您应该实际测试以确保输入正在等待您,然后再尝试使用这些hasNextXXXXX()方法读取它。

尝试这个:

String no; 

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

    //.....
}

问题不在于您的输入文件没有任何数据,而在于您的输入文件用完了数据,因为您不断地阅读。如果你在什么都没有的时候尝试阅读,你会得到一个NoSuchElementException

于 2012-08-16T18:13:28.820 回答