Ledko
2021-11-26 10:36
采纳率: 0%
浏览 37

如何定义一个未知输入数字个数的数组?

初学者:如果你想把一串数输入数组,但是你又不确定输入的个数,那我们怎么定义这个数组?
我是这样定义的

img

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 可以,然后循环给数组赋值

    for(int i=0;i<n;i++)
      arr[i] = s.nextInt();
    
    

    编辑记录

    评论
    解决 无用
    打赏 举报
  • CSDN专家-sinjack 2021-11-26 10:46

    如果用数组,需要先确定数组的大小才能使用。
    对于不确定输入几个数。
    1、定义一个较大长度的数组,记录一下输入的数的个数count。
    后面操作数组,最大下标到count-1.
    2、用集合。可以随意的向集合放不确定的数。

    import java.util.ArrayList;
    import java.util.List;
    public class Main {
        public static void main(String[] args) {
            List<Integer> list=new ArrayList<>();
            list.add(1);
            list.add(2);
            list.add(3);
        }
    }
    
    
    

    编辑记录

    评论
    解决 无用
    打赏 举报
  • 於黾 2021-11-26 10:56

    java有list可用

    评论
    解决 无用
    打赏 举报
  • 半醉人间leo 2021-11-26 11:21
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("依次输入数字 end 结束");
        List<Integer> intList = new ArrayList<>();
        String number = sc.nextLine();
        while (!"end".equals(number)){
            intList.add(Integer.parseInt(number));
            number=sc.nextLine();
        }
        Integer[] intArray = new Integer[intList.size()];
        intList.toArray(intArray);
        for (Integer integer : intArray) {
            System.out.println(integer);
        }
    }
    
    评论
    解决 无用
    打赏 举报
  • yu_duan_hun 2021-11-27 16:00

    非常棒,很有探索精神,我正面回答:可以通过复制数组扩
    例子如下:

    public class Main {
        public static void main(String[] args) {
            Main main = new Main();
    
            for(int i = 0; i < 50; i++){
                main.addExpand(i);
            }
            main.printArr();
        }
    
        int size = 10;
        int[] arr = new int[size];//假设初始大小是10
        int idx = 0;
        private void addExpand(int item){
            if(idx == size){
                expand();
            }
            arr[idx++]=item;
        }
    
        private void printArr(){
            for(int i = 0; i < idx; i++){
                System.out.print(arr[i]);
                System.out.print(" ");
            }
            System.out.println();
        }
    
        private void expand(){
            size = size*2;//假设扩到2倍
            int [] copy = new int[size];
            //复制,从arr索引0到copy索引0,arr索引1到copy索引1......,一直复制到arr.length个到copy
            System.arraycopy(arr,0,copy,0,arr.length);
            arr = copy;
        }
    }
    

    我这属于ArrayList简单版,ArrayList集合类内部就是这样写的(扩容默认1.5倍)

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题