CodeEval上的Java程序必须接受文件路径作为参数。我使用命令行参数来执行此操作,但是当我在CodeEval上提交代码时,我得到如下的异常。这个问题有哪些潜在的解决方案?
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
at java.util.StringTokenizer.nextElement(StringTokenizer.java:407)
at Main.FileRead(Main.java:61)
at Main.main(Main.java:26)
答案 0 :(得分:3)
这是我用于Codeeval代码的样板Java代码。具体的问题代码通常在processLine方法中。我不使用Scanner或StringTokenizer。我使用String split方法来处理输入。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Main implements Runnable {
private String fileName;
public Main (String fileName) {
this.fileName = fileName;
}
@Override
public void run() {
try {
processFile();
} catch (IOException e) {
e.printStackTrace();
}
}
private void processFile() throws IOException {
BufferedReader br = new BufferedReader(
new FileReader(fileName));
String line = "";
while ((line = br.readLine()) != null) {
processLine(line);
}
br.close();
}
private void processLine(String line) {
System.out.println(line);
}
public static void main(String[] args) {
new Main(args[0]).run();
}
}
答案 1 :(得分:3)
首先,检查class.Class名称应该是' Main'。 其次,您必须在程序中使用CodeEval编辑器中的所有导入。
答案 2 :(得分:0)
如果您不检查是否还有其他令牌(通过调用hasMoreTokens
),则会发生这种情况。如果不存在更多令牌并且您调用nextToken
,则会收到此异常。但是,如果没有看到其余的代码,就无法知道实际发生了什么。