簡體   English   中英

添加通過用戶輸入決定的數組元素

[英]Adding elements of an array that was decided through user input

我試圖將所有元素添加到一個通過用戶輸入決定的數組中,每次運行我在下面構建的代碼時,我都會得到一個顯然不是元素總和的數字。 我究竟做錯了什么?

import java.util.Scanner;
public class SumProduct
{
    public static void main (String []args)
    {
        Scanner input = new Scanner (System.in);
        int[] array1 = new int [input.nextInt()];
        input = scan.nextInt();        
        for (int i = 0; i < array1.length; i++)
        {
            array1[i] = input.nextInt();
        }
        for (int i = 0; i < array1.length; i++)
        {
            int j = array1[i];
            int k = array1[i]+1;
            int sum = j + k;
            System.out.print(sum);
        }
    }
}

如果您打算這樣做,您可能希望提示用戶輸入數組的大小。這行代碼允許用戶輸入的任何內容都是數組的大小。

int[] array1 = new int [input.nextInt()]; //this sets the size of the array through user input

當前上下文中不存在掃描:

input = scan.nextInt();   // this is invalid syntax as scan is not the Scanner you created    
for (int i = 0; i < array1.length; i++)
{
    array1[i] = input.nextInt();
}

我會這樣做以繼續向數組添加元素:

// no need for this: input = scan.nextInt();
for (int i = 0; i < array1.length; i++)
{
    System.out.println("Enter integer to add:");
    array1[i] = input.nextInt();
}

如果您一次只向 sum 變量添加一個元素而不是兩個元素,則此代碼將為您提供元素的總和:

int sum = 0;
for (int i = 0; i < array1.length; i++)
{
    sum += array1[i];
    System.out.print(sum);  // this will print out sum after each addition
}
System.out.print(sum);  // this will print out sum after the entire array is summed

添加一些邏輯以僅允許用戶向數組輸入如此多的數字也會有所幫助。 您將需要從他們在某個時候將數據輸入到數組中繼續前進。 然后還記得在完成從用戶那里獲取數據后關閉掃描儀:

input.close();

您的問題出在以下代碼行中:

for (int i = 0; i < array1.length; i++)
    {
        int j = array1[i];
        int k = array1[i]+1;
        int sum = j + k;
        System.out.print(sum);
    }

它應該看起來像

int sum = 0;
for (int i = 0; i < array1.length; i++)
    {
        sum = sum + array1[i];
    }
System.out.print(sum);

第一個變化是在循環之外聲明變量“sum”。 它的編寫方式將被聲明,然后消失,然后聲明,然后在每次循環迭代中消失。 您可能還想將其初始化為 0

第二個變化是你的求和邏輯。 讓我們假設您的數組包含三個數字 [1, 2, 3] 並遍歷您的邏輯。

j = array1[0]     //(j == 1)
k = array1[0] + 1 //(k == 1 + 1 == 2)
sum = j + k       //(sum == 1 + 2 == 3)

然后像我之前提到的那樣丟棄變量“sum”,在第二個數組元素上使用相同的邏輯重新開始,然后在第三個數組元素上再次開始。
即 j = 2, k = 2+1, sum = 2 + 2 + 1. 其次是 j = 3, k = 3 + 1, sum = 3 + 3 + 1。

您可能會看到這不是總和,並導致您在此示例案例中記錄三個數字 3、5 和 7。 在我更新的邏輯中,我們簡單地遍歷每個元素並將其添加到當前運行總數中。

希望這可以幫助

暫無
暫無

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

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