用随机生成的整数填充的数组的值之和
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 循环。您只是在更新 values1
和 values2
变量。您还应该将它们添加到数组中。
代码将是
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 学习顺利。
写一个方法 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 循环。您只是在更新 values1
和 values2
变量。您还应该将它们添加到数组中。
代码将是
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 学习顺利。