我的代码没有从文件中读取该行。但我不确定为什么。初级Java,任何输入都有帮助。
感谢。
public class ReverseWords {
public static void main(String [] args){
Scanner in = new Scanner(System.in);
System.out.print("Enter File Name: ");
String fileName = in.nextLine();
File f = new File(fileName);
try {
Scanner input = new Scanner(f);
int n = input.nextInt();
String line = input.nextLine();
System.out.println(line);
String [] words = line.split(" ");
for(int i=0; i<words.length; i++){
System.out.println(words[i]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
没有文件内容我只能猜测。
nextInt()
不会更改Scanner
中的行计数器,因此nextLine()
调用将返回您当前所在行的其余部分。
这可能不是你想要的,这就是没有读取行的原因。
为避免您在nextLine()
之后执行额外nextInt()
来电,明确更改行计数器:
int n = input.nextInt();
input.nextLine();
String line = input.nextLine();
来自Scanner.nextLine API doc:
此方法返回当前行的其余部分,不包括任何行 最后的分隔符。
答案 1 :(得分:0)
我认为你得到了filenotfound异常。
你必须指定绝对路径作为输入。
drive:/sample/input.txt
首先尝试直接从
中读取源文件 Scanner sc = new Scanner(new File("drive:/dir/file"));
或者您可以将文件放在项目所在的位置。 [该文件夹被命名为项目名称] 在这种情况下,您可以简单地指定“file.extesion”作为从该文件中读取的输入。
但是如果文件存在:(可以检查新文件(filename.ext).exists())然后检查是否有输入要读
用于读取整个文件或更多行,您应该将其放入循环中(实际上只读取一行)
while(sc.hasnextLine())
{
line=sc.nextLine() //check it first and then process
//process this line for words
}