用随机生成的整数填充的数组的值之和

sum of values of an array filled with integers randomly generated

写一个方法 sum(int[] values) 来 returns 对数组值的元素求和。

当我显示求和方法时,它只显示数组的最后一个元素

(我还是个初学者,请放轻松)

        System.out.print("Generated numbers for player 1 are: ");
        int values1 = 0;
        for (int i = 0; i <= 10; i++) {
           
            values1 = 1+(int)(Math.random()*(6-1));
            System.out.print(values1+" ");
        }
    
        System.out.print("\nGenerated numbers for player 2 are: ");
        int values2 = 0;
        for (int i = 0; i <= 10; i++) {
           
            values2 = 1+(int)(Math.random()*(6-1));
            System.out.print(values2+" ");
        }
        int[] player1 = {values1};
        int[] player2 = {values2};
        System.out.println("\n");
        sumArray(player1);
        sumArray(player2);
        
        System.out.println(sumArray(player1));
       
    }
    public static int sumArray( int[] sum) {
    int add=0;
    for(int i=0; i< sum.length; i++) { 
      add += sum[i];
    }

    return add;

您不了解如何填充数组

int[] player1 = new int[10];
for (int i = 0; i < 10; i++) {
       
        values2 = 1+(int)(Math.random()*(6-1));
        System.out.print(values2+" ");
        player1[i] = values2;
}

我已经更改数组的大小为 10,而不是像您编码的那样(这导致输入 11 个元素)

主要问题在于您的 for 循环。您只是在更新 values1values2 变量。您还应该将它们添加到数组中。

代码将是

int[] player1 = new int[11];
for (int i = 0; i <= 10; i++) {        
   values1 = 1+(int)(Math.random()*(6-1));
   player1[i] = values1;
   System.out.print(values1+" ");
}

另外你不需要这两行。

int[] player1 = {values};
int[] player2 = {values2};

您的 player1 player2 仅包含单个元素,这就是您将总和作为最后一个元素(或单个元素)的值的原因。

如果您希望 values1 包含多个值,请考虑将其定义为数组而不是单个整数。

int values1 = new int[11];
for (int i = 0; i <= 10; i++) {
           
            values1[i] = 1+(int)(Math.random()*(6-1));
            System.out.print(values1[i]+" ");
        }

您的 values2 情况类似。之后可以直接调用:

sumArray(values1);

无需单独定义 player1 & player2.

我会提出一些建议。
首先,您应该尽量不要“复制”代码。这里 Player1 和 Player2 可以作为参数传递给将生成它们的数组的方法。
其次,如果你想对数组进行任何操作,你应该避免使用 [] 而是使用 ArrayList 例如。
另外,您可能想研究面向对象的逻辑,因为您似乎没有对 Person 使用 class,这取决于您想要实现的目标,您可以使用具有属性的 class“Person” “值”,类型为 ArrayList。

至于您的代码,您重新分配了“value1”和“value2”,因此它们只是整数,而不是列表。
这将给出如下内容:

public static int generateValue(PersonClass person) {
    ArrayList<Integer> values = new ArrayList<>();

    for (int i = 0; i <= 10; i++) {
        values.add(1+(int)(Math.random()*(6-1)));
    }

    person.setValues(values);

    return sumArray(values);
}

public static int sumArray(ArrayList<Integer> values) {
    int add=0;
    for (Integer value : values) {
        add += value;
    }
    return add;
}

这样,您将能够检索您的值并根据需要打印它们。 “PersonClass”部分不是强制性的,它仅取决于您是否想让您的值与一个人相关联(您需要这些数据多长时间)。

(class PersonClass 的示例:

public class PersonClass {
    private ArrayList<Integer> values = new ArrayList<>();

    public ArrayList<Integer> getValues() {
        return this.values;
    }

    public void setValues(ArrayList<Integer> newValues) {
        this.values = newValues;
    }
}

因为您应该始终使用 getter 和 setter)。祝你 Java 学习顺利。