Java实现动态输入一组数,存到数组里面

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
     
    /**
     * @author jadexu
     * @// TODO: 2020/12/26
     * 动态输入一组数,存到数组里面
     * (以下使用了try-catch异常处理,目的在于方便动态输入一组数据时跳出输入,
     * 只要输入的数据不是double及以下数据类型,就跳出循环,程序结束)
     */
    static Scanner sc = new Scanner(System.in);
    private static void fun1() {
     
        /*
        方法1:数组
        思路:
        既然要动态输入一组数,那么至少有一位数,所以先接收一个数,并赋给数组arr1,
        每接收一个数,就new一个新的数组,长度是旧数组的长度再加1,
        依次复制旧的数组的值,且将新接收的数放在末尾,
        再将整个数组赋值给旧的数组,旧的数组就指向新的数组的地址值
         */
        double[] arr1 = {
     sc.nextDouble()};
        double[] newArr = {
     };
        while (sc.hasNextDouble()){
     
            try{
     
                double num = sc.nextDouble();
                newArr = new double[arr1.length+1];
                newArr[newArr.length-1] = num;
                for (int j = 0; j < arr1.length; j++) {
     
                    newArr[j] = arr1[j];
                }
                arr1 = newArr;
            }catch (Exception e){
     
                break;
            }
        }
        //输出
        for (double num:arr1) {
     
            System.out.print(num+"\t");
        }
    }

    private static void fun2() {
     
        /*
        方法2:Arrays数组工具类
        思路:
        使用Arrays.copyOf()方法,将旧数据赋值给数组,
        且长度依次+1,末尾添加新接收的数,
        省略了需要用两个数组往复新建赋值的操作
         */
        double[] arr2 = {
     };
        while (sc.hasNextDouble()){
     
            try{
     
                double num = sc.nextDouble();
                arr2 = Arrays.copyOf(arr2,arr2.length+1);
                arr2[arr2.length-1] = num;
            }catch (Exception e){
     
                break;
            }
        }
        System.out.println(Arrays.toString(arr2));
    }

    private static void fun3() {
     
        /*
        方法3:String类
        思路:
        将所有接收的数依次用,拼接成一个字符串,
        使用String.spilt(pattern)方法,将字符串按照逗号分隔成一个字符串数组,
        循环每个切割后的字符串,类型转换成double,赋值给double数组
         */
        String str = "";
        while (sc.hasNextDouble()){
     
            double num;
            try{
     
                num = sc.nextDouble();
            }catch (Exception e){
     
                break;
            }
            str += num+",";
        }
        String[] strArr = str.split(",");
        double[] arr3 = new double[strArr.length];
        for (int i = 0; i < arr3.length; i++) {
     
            arr3[i] = Double.parseDouble(strArr[i]);
        }
        System.out.println(Arrays.toString(arr3));
    }

    private static void fun4() {
     
        /*
        方法4:泛型集合
         */
        ArrayList<Double> arr4 = new ArrayList<>();
        while (sc.hasNext()){
     
            try{
     
                double num = sc.nextDouble();
                arr4.add(num);
            }catch (Exception e){
     
                break;
            }
        }
        System.out.println(arr4);
    }
}

方法1:
Java实现动态输入一组数,存到数组里面_第1张图片
方法2:
Java实现动态输入一组数,存到数组里面_第2张图片
方法3:
Java实现动态输入一组数,存到数组里面_第3张图片
方法4:
Java实现动态输入一组数,存到数组里面_第4张图片

你可能感兴趣的:(Java,Java案例,java,字符串,数组,集合)