我已编写此代码以找出输出,并且我在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
答案 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();
}