在一系列整数上使用扫描仪时,如何跳过一些整数?

时间:2011-05-22 02:24:29

标签: java

以下代码为例

while (lineScan.hasNextLine()) {
   int x = lineScan.nextInt();
   x = lineScan.nextInt();
   x = lineScan.nextInt();
   x = lineScan.nextInt();
   x = lineScan.nextInt();
   System.out.println(x + "\n");
}

将打印出每五个整数。

是否有一种简单的方法可以跳过每五个整数?

5 个答案:

答案 0 :(得分:3)

while (lineScan.hasNextLine()) {
    for(int i=0; i<5; i++)
        x = lineScan.nextInt();

    System.out.println(x + "\n");
}

OR

while (lineScan.hasNextLine()) {
    for(int i=0; i<4; i++) 
        lineScan.nextInt();

    x = lineScan.nextInt();
    System.out.println(x + "\n");
}

似乎相当原始,但是,它有效。

答案 1 :(得分:3)

我看到很多人检查hasNextLine然后读取整数。我总是被告知,如果你检查hasNextX,你应该通过调用nextX来跟踪它,如果检查通过,但是从来没有下一个。换句话说,如果你检查hasNextLine(),你应该读入nextLine(),如果你想要int,你应该在读入nextInt()之前检查hasNextInt(),其中每次读取一次检查 。在你的情况下,我会阅读该行,然后使用另一个仅适用于该行的Scanner对象进行操作(不要忘记在完成后保存资源时关闭它!)或使用String split。

例如,如果以第一种方式进行,我会做类似的事情:

  while (lineScan.hasNextLine()) {
     String line = lineScan.nextLine();

     Scanner innerScanner = new Scanner(line);
     int x = 0;
     while (innerScanner.hasNextInt()) {
        x = innerScanner.nextInt();
     }
     System.out.println("" + x);
     innerScanner.close();
  }

并且第二种方式:

  while (lineScan.hasNextLine()) {
     String line = lineScan.nextLine();

     String[] splitLine = line.split(" "); // the delimiter may be different! a comma?
     if (splitLine.length >= 5) {
        System.out.println(splitLine[4]);
     }
  }

答案 2 :(得分:2)

这样做:

int i = 0;
while(lineScan.hasNextLine()) {
   i++;
   int x = lineScan.nextInt();
   if (x%5 == 0) System.out.println(x + "\n");
}

答案 3 :(得分:1)

只做nextInt()并忽略结果?

答案 4 :(得分:0)

使用循环,我想:

while(lineScan.hasNextLine()) {
     for(int i = 0; i < 4; i++) lineScan.nextInt();
     System.out.println(Integer.toString(lineScan.nextInt()) + "\n"); // is this supposed to be "popularity"?
}