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]);
      }
}

多亏了穷人调试,我发现while(scan.hasNextInt())实际上并没有添加任何东西。可能出什么问题了?我的Google Fu是弱者还是缺乏专业知识使我失望?我对编程很陌生,因此对Lists并不熟悉,因此认为这是一个不错的第一步,但是并没有增加任何东西。它也可以很好地编译,因此不再是语法。也许是铸造问题?

最佳答案

这行得通吗,Samwise大师?

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]);
    }
  }
}

我假设有一个原因需要列表作为数组,否则就不需要转换为数组。正如Jon Skeet在评论中提到的那样,仅当流没有下一个int时,循环才会终止。非整数值或文件的EOF(如果使用的是'java CyclicShiftApp
07-28 10:23