java麻烦从文件中读取行

时间:2013-05-31 17:15:34

标签: java java.util.scanner

我的代码没有从文件中读取该行。但我不确定为什么。初级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();
     }

}    

2 个答案:

答案 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 

}