簡體   English   中英

在Java中將元素添加到兩個不同的數組

[英]Adding elements to two different arrays in java

我正在嘗試將元素添加到兩個數組。 我聲明了雙精度數組,以便它們也接受十進制數。

我從用戶那里得到7個元素並添加它們。 如果用戶只給出6個元素而不是7個元素,它將等待直到給出第7個元素。

如果用戶僅給出6個元素而不是7,則必須將第7個元素的位置設為“ 0”,然后將這些元素相加並打印總和。 它不能等待第七元素。 為此,我該怎么辦?

        Scanner in = new Scanner(System.in);
        double a[] =new double[100];
        double b[] =new double[100];
        double suma=0,sumb=0;
        for(int i=0;i<7;i++)
        {
            a[i]=in.nextDouble();
            suma=suma+a[i];
        }
        for(int i=0;i<7;i++)
        {
            b[i]=in.nextDouble();
            sumb=sumb+b[i];
        }

我們可以使用這樣的東西

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String strArr[] = br.readLine().split(" ");
double a[]=new double[100];
double suma=0;
for(int i=0;i<strArr.length;i++)
{
  a[i] = Double.parseDouble(strArr[i]);
  suma += a[i];
}

這樣,如果僅提供6個值,則數組將具有從索引0到5的值,其余所有值將保持為0

您可以使用特定的定界符來排除默認的新行。 這樣,您可以使用hasNextDouble循環直到到達行尾。

    Scanner in =new Scanner(System.in);
    double a[]=new double[10];
    double b[]=new double[10];
    double suma=0,sumb=0;

    //Use space as delimiter only, this accept a regex
    in.useDelimiter("[ ]+")
        .useLocale(Locale.ENGLISH);

    //Loop until the line is out of value (separated by spaces)
    for(int i=0; in.hasNextDouble(); i++)
    {
        a[i]=in.nextDouble();
        suma=suma+a[i];
    }

    //Consume the newline still in the buffer
    in.nextLine();

    //Loop until the line is out of value (separated by spaces)
    for(int i=0; in.hasNextDouble(); i++)
    {
        b[i]=in.nextDouble();
        sumb += b[i];
    }

    System.out.println("Sum of " + Arrays.toString(a) + " = " + suma);
    System.out.println("Sum of " + Arrays.toString(b) + " = " + sumb);

范例:

[1.1、5.4、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0]的總和= 6.5
[4.8、7.4、1.5、4.8、0.1、0.0、0.0、0.0、0.0、0.0]的總和= 18.6

請注意,如果使用文件,則可以使用兩個循環讀取所有內容並將其放入列表中,從而可以對此進行改進。

    Scanner in = new Scanner("1.4 2.2 3.1\n1.8 7.4 24.5");
    List<List<Double>> arrays = new ArrayList<>();

    in.useDelimiter("[ ]+")
        .useLocale(Locale.ENGLISH);

    List<Double> tmp;
    do{
        tmp = new ArrayList<>();
        arrays.add(tmp);
        while (in.hasNextDouble()) {
            tmp.add(in.nextDouble());
        }
        System.out.println(tmp);
        System.out.println(tmp.stream().mapToDouble(d -> Double.valueOf(d)).sum());
    } while (in.hasNextLine() && in.nextLine() != null);

[1.4,2.2]
3.6
[1.8、7.4、24.5]
33.7

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM