如何让 ArrayList<Integer> 和 Scanner 发挥出色?

Sam*_*ens 5 java casting arraylist java.util.scanner

import java.util.*;

public class CyclicShiftApp{

   public static void main(String[] args){
      Scanner scan = new Scanner(System.in);
      ArrayList<Integer> list = new ArrayList<Integer>();
      while(scan.hasNextInt()){
         list.add(scan.nextInt());
      }
      Integer[] nums = new  Integer[list.size()];
      nums = list.toArray(nums);
      for(int i = 0;i < nums.length; i++){
      System.out.println(nums[i]);
      }   
}
Run Code Online (Sandbox Code Playgroud)

感谢poor-mans-debugging,我发现while(scan.hasNextInt())实际上并没有添加任何东西。可能出什么问题了?是我的 google-fu 弱还是缺乏专业知识让我失望?我对编程很陌生,所以不熟悉列表,所以认为这将是一个不错的第一步,但并没有增加一些东西。它也编译得很好,所以它不是语法(不再)。也许是铸造问题?

rth*_*sen 2

山姆威斯大师,这有用吗?

import java.util.*;

public class CyclicShiftApp{

public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    ArrayList<Integer> list = new ArrayList<Integer>();
    System.out.print("Enter integers please ");
    System.out.println("(EOF or non-integer to terminate): ");

    while(scan.hasNextInt()){
         list.add(scan.nextInt());
    }

    Integer [] nums = list.toArray(new Integer[0]);
    for(int i = 0; i < nums.length; i++){
       System.out.println(nums[i]);
    }
  }   
}
Run Code Online (Sandbox Code Playgroud)

我假设您需要将列表作为数组是有原因的,否则不需要转换为数组。正如 Jon Skeet 在评论中提到的,只有当流没有下一个 int 时,循环才会终止,即。如果您使用“java CyclicShiftApp < input_file.txt”,则为非整数值或文件的 EOF。