5
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 是软弱还是缺乏专业知识让我失望了?我对编程很陌生,所以对列表不熟悉,所以认为这将是一个不错的第一步,但有些东西并没有加起来。它也编译得很好,所以它不是语法(不再)。也许是选角问题?

4

4 回答 4

2

你的问题在这里:

 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
于 2013-04-19T06:08:51.360 回答
2

这行得通吗,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 时,循环才会终止,即。如果您使用的是“java CyclicShiftApp < input_file.txt”,则为非整数值或文件的 EOF。

于 2013-04-19T06:15:52.233 回答
1
import java.util.*;
class SimpleArrayList{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
ArrayList <Integer> al2 = new ArrayList<Integer>();
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());
}
}
}
于 2017-08-10T11:32:24.830 回答
0

这是一起使用 Scanner 和 ArrayList 的最简单和最简单的方法之一。

import java.util.*;
public class Main
{
public static void main(String args[])
{
    Scanner sc=new Scanner(System.in);
    int num=sc.nextInt();
    ArrayList<Integer> list=new ArrayList<Integer>(num);
    for(int i=0;i<num;i++)
    {
    list.add(sc.nextInt());

   }
    Iterator itr=list.iterator();
        {
       while(itr.hasNext())
       {
           System.out.print(itr.next()+" ");
        }
        }
    }
}
于 2019-06-28T08:54:23.847 回答