如何让ArrayList 和Scanner玩得很好?

import java.util.*; public class CyclicShiftApp{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); ArrayList list = new ArrayList(); 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())实际上并没有添加任何内容。 可能出了什么问题? 我的谷歌软弱还是缺乏让我失望的技术诀窍? 我对编程很陌生,所以不熟悉Lists所以认为这将是一个不错的第一步,但有些东西并没有加起来。 它也编译好,所以它不是语法(再也没有)。 也许铸造问题?

这是否有效,掌握Samwise?

 import java.util.*; public class CyclicShiftApp{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); ArrayList list = new ArrayList(); 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时终止,即。 如果您正在使用'java CyclicShiftApp

你的问题在这里:

  while(scan.hasNextInt()){ <-- This will loop untill you enter any non integer value list.add(scan.nextInt()); } 

只需在输入所有整数值后输入一个字符,例如q ,然后程序将打印预期结果。

 Sample Input :14 17 18 33 54 1 4 6 q 
 import java.util.*; class SimpleArrayList{ public static void main(String args[]) { Scanner sc = new Scanner(System.in); ArrayList  al2 = new ArrayList(); System.out.println("enter the item in list"); while(sc.hasNextInt()) { al2.add(sc.nextInt()); } Iterator it1 = al2.iterator(); /*loop will be terminated when it will not get integer value */ while(it1.hasNext()) { System.out.println(it1.next()); } } }