程序很简单,判断输入数字是否为空,不为空,就用arraylist.add()方法,添加,然后再把这个完成的数组copy给另一个数组,可是就是无法显示,有点小问题,忘大虾们提点提点吧。如果可以的话,可以帮我把数字输入,改成字符串输入吗?import java.util.ArrayList;
import java.util.Iterator;
import java.util.Arrays; 
import java.util.Scanner;
 
public class Test{
public static void main(String[] args){ ArrayList List = new ArrayList();
Scanner input = new Scanner(System.in);

int num = 1;
while(num != 0)
{
System.out.print("请输入整数,0 退出:");
num = input.nextInt();
List.add(num);

}
System.out.print("您已经退出。");

int [] students = new int[List.size()];
System.arraycopy(List, 0, students, 0, List.size() );
for(int element: students){
System.out.print(element);
} }
}

解决方案 »

  1.   

    System.arraycopy(List, 0, students, 0, List.size() ); 这个方法不是用来Copy数组的号,怎么放一个List进去?public static void main(String[] args) { ArrayList List = new ArrayList();
    Scanner input = new Scanner(System.in); int num = 1;
    while (num != 0) {
    System.out.print("请输入整数,0 退出:");
    num = input.nextInt();
    List.add(num); }
    System.out.print("您已经退出。"); for (Object object : List) {
    System.out.println(object);
    } }List 可以直接打印出来不用再放到一个数组中去吧如果真的需要就直接.toArray()不就行了?
      

  2.   


    package test;import java.util.ArrayList;
    import java.util.Scanner;public class TestA {
    public static void main(String[] args) { ArrayList<String> lst = new ArrayList<String>();
    Scanner input = new Scanner(System.in); String num = "";
    while (!num.equals("0")) {
    System.out.print("请输入整数,0 退出:");
    num = String.valueOf(input.nextInt());
    lst.add(num);
    }
    System.out.println("您已经退出。"); String[] students = new String[lst.size()];
    System.arraycopy(lst.toArray(), 0, students, 0, lst.size()); for (String element : students) {
    System.out.println(element);
    } }
    }
      

  3.   

    摘自JDK文档,System.arraycopy():
    只要下列任何情况为真,则抛出 ArrayStoreException 异常并且不会修改目标数组:src 参数指的是非数组对象。
    dest 参数指的是非数组对象。
    src 参数和 dest 参数指的是那些其组件类型为不同基本类型的数组。
    src 参数指的是具有基本组件类型的数组且 dest 参数指的是具有引用组件类型的数组。
    src 参数指的是具有引用组件类型的数组且 dest 参数指的是具有基本组件类型的数组。应该是在从Object数组复制到int数组时,发生了上边的异常。可以改为Integer类型的ArrayList<Integer> 和 Integer[]:import java.util.ArrayList;
    import java.util.Scanner;public class Test{ 
    public static void main(String[] args){ 

    ArrayList<Integer> List = new ArrayList<Integer>();
    Scanner input = new Scanner(System.in); 

    int num = 1; 
    while(num != 0)

    System.out.print("请输入整数,0 退出:");
    num = input.nextInt(); 
    List.add(num); 

    System.out.println("您已经退出。");  Integer [] students = new Integer[List.size()]; 
    System.arraycopy(List.toArray(), 0, students, 0, List.size() ); 
    for(int element: students){
    System.out.print(element); 


    }
      

  4.   

    2楼的有一句num = String.valueOf(input.nextInt());
    每次我输入字符串的时候就会报错
      

  5.   

    其实为什么还要转成数组呢,List不是可以直接遍历出来吗?package demo;import java.util.ArrayList;
    import java.util.Scanner;public class Test {
    public static void main(String[] args) { ArrayList list = new ArrayList();
    Scanner input = new Scanner(System.in); int num = 1;
    while (num != 0) {
    System.out.print("请输入整数,0 退出:");
    num = input.nextInt();
    list.add(num); }
    System.out.print("您已经退出。"); for (Object object : list) {
    System.out.println(object);
    } }
    }/code][code=Java]
    for (Object object : list) {
    System.out.println(object);
    }这样不就可以打印出来了么
      

  6.   

    可以了,把那句改成num = String.valueOf(input.next());就可以了,结分。
      

  7.   


    晕,我以为你要我把里面的 int 全部改成 String。原来你是想输入String。