打印时,扫描仪无法正确打印

时间:2016-01-17 22:27:46

标签: java java.util.scanner

public static void main(String[] args) throws FileNotFoundException{
    Scanner console = new Scanner(System.in);
    readFile(console.next()); 
}

public static void readFile(String name) throws FileNotFoundException{
    Scanner input = new Scanner(new File("names.txt")); // Open pipe
    while(input.hasNextLine()){
        String line = input.nextLine();
        scanLine(line, name);
    }
}

public static void scanLine(String line, String name) throws FileNotFoundException{
    Scanner oneLine = new Scanner(line);
    String txtName = oneLine.next();
    System.out.println("txtName: " + txtName);
    System.out.println("name: " + name);
}

使用第18行(打印名称); 回复:[不正确]

txtName: Delvin
name: A
txtName: Demarco
name: A
txtName: Demarcus
name: A
txtName: Demario
name: A
....

没有第18行: 回复:[正确]

txtName: A
txtName: Aaliyah
txtName: Aaron
txtName: Abagail
txtName: Abbey
txtName: Abbie
txtName: Abbigail
txtName: Abby
txtName: Abdiel
txtName: Abdul
txtName: Abdullah
txtName: Abe
txtName: Abel
....

这就是代码的流程:

  1. 用户输入字符串(名称)
  2. readFile被调用,我创建了一个新的Scanner对象并传入了一个 new File
  3. 我希望应用程序继续运行直到它到达最后一个 .txt文件的行,所以当输入有一个nextLine时,它会保留 循环。
  4. 我将字符串从一行传递给scanLine,然后创建一个 该字符串的新Scanner对象。
  5. 每一行看起来像:String [Name],Int [Number],Int,Int,Int ...
  6. 找到与用户名称相匹配的行后 然后输入,然后将该行发送到getStats()[到目前为止。]
  7. 问题: 出于某种原因,只打印name变量(第18行)oneLine.next()似乎开始在.txt文件中间的某处开始打印。

    但是,如果我不打印名称,(或根本不使用名称变量) - 它似乎完美无缺,将第一个字母A打印到最后一个。

1 个答案:

答案 0 :(得分:2)

  

问题:出于某种原因,只打印名称变量(第18行)oneLine.next()似乎开始在.txt文件中间的某处开始打印。

无论是在Windows控制台中运行还是在IDE中运行(如Eclipse),输出窗口都限制为可显示的行数。

当每行输入打印2行时,输出窗口溢出,输出的前半部分(?)被丢弃。它仍然被打印出来,在你看到之前就滚动了。