java - 使用Java扫描仪偶数和奇数

标签 java java.util.scanner

我尝试仅将偶数添加到ArrayList。我认为使用扫描仪处理文件是最合适的工具。文件的路径应该写在控制台中。我还使用两种最流行的方法来定义偶数。 问题是 - 不仅仅是偶数添加到我的 ArrayList 中。 这是我的代码:

BufferedReader bfReader = new BufferedReader(new InputStreamReader(System.in));
InputStream inputStream = null;
List<Integer> myInts = new ArrayList<Integer>();

String filePath = null;
try {
  filePath = bfReader.readLine();
  inputStream = new FileInputStream(filePath);
} catch (IOException e) { }

Scanner scanner = new Scanner(inputStream);
while (scanner.hasNext()) {
  if ((scanner.nextInt() % 2) == 0 && scanner.nextInt() != 1) 
    myInts.add(scanner.nextInt());
  // if ((scanner.nextInt() & 1) == 0)
  //   myInts.add(scanner.nextInt());
}

for (Integer x : myInts) {
  System.out.println(x);
}

我想我误解了有关扫描仪的一些内容。
很高兴收到任何答案!

最佳答案

原因是每次新调用nextInt()都会从输入中读取新的整数。

这是一个修改后的代码片段,说明了您可能想要尝试的内容:

Scanner scanner = new Scanner(inputStream);
int myInt;

while (scanner.hasNext()) {
  myInt = scanner.nextInt();

  if ((myInt % 2) == 0 && myInt != 1) 
    myInts.add(myInt);
}

有关更多信息,请参阅 docs .

关于java - 使用Java扫描仪偶数和奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35139231/

相关文章:

java - 通过 Java jt400 的 AS400 作业队列

linux - Eclipse 在带有最新 OpenJDK 的全新 Fedora 22 上无法加载(退出代码 13)

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java.util.NoSuchElementException : Read words from a file

java - 使用 imap 从 Gmail 接收附件

java - 全屏和窗口模式 Jframe

java - 如何在java selenium中对两个数组字符串值求和并存储到另一个数组列表中?

java - 从java中的数组中查找重复元素出现两次以上

java - 递归:扫描数字中数字的频率:redux

java - 在文件中搜索字符串