0

私は出力を見つけるためにこのコードを書きました、そして私はサーブレットでランタイムを使用してこれを実行しています。入力ファイルにデータが含まれていることを確認しましたが、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

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 に答える
0

私が考えることができるのは、ディレクトリが存在しないということだけです。よろしいですか?そうでない場合は、手動で作成するか、.mkdir()関数を使用する必要があります

于 2012-08-16T19:09:46.617 に答える