3 回答
TA贡献1824条经验 获得超6个赞
您的第一个 for 循环是将数组中的每个索引分配给最新的输入。您不需要嵌套 for 循环来完成此作业。这是一个带有注释的示例,解释了代码的不同方面。
Scanner in = new Scanner(System.in);
int[] numbersList = new int[10];
int amount = 0;
int total = 0;
do { //stop at negative
int number = in.nextInt();
if (number < 0) {
// if a negative number is entered then stop looping
break;
}
amount += 1;
// use modulo arithmetic to assign numbers, the accessed index will
// range from 0 to 9
numbersList[amount % 10] = number;
// iterate over numbersList and sum entries
for(int i = 0; i < numbersList.length; i++){
total += numbersList[i];
}
// output total
System.out.println(total);
// reset total to 0
total = 0;
} while(number >= 0); // this is redundant since we check earlier
System.out.println(total);
TA贡献1852条经验 获得超7个赞
只需声明
number
为int number;
,它就会自动取值 0。无需询问 Scanner。第一个 int 永远不会被使用,因为你在 while 循环中请求另一个 int。在第 n 轮中,您将用当前轮数替换前 n+1 个整数(0 <= i <= n -> n+1 轮;改为使用
i < amount
)。如果您“玩”超过 9 轮,这将导致异常。每次替换单个整数后,您都会遍历整个数组。请注意,该总数永远不会重置。
您并不是在输入负数后立即停止,而是也用这个负数运行一轮然后终止。
break;
因此,如果您发现结果是否定的,请使用 anumber
(因此,请在从扫描仪获取结果后进行测试)。
因此,您可以对以下数组求总和(省略尾随 0):
[2] //2
[2,2] //2 + 2 + 2 = 6
[3,2] //6 + 3 + 2 = 11
[3,3] // 11 + 3 + 3 = 17
[3,3,3] // 17 + 3 + 3 + 3 = 26
[4,3,3] // 26 + 4 + 3 + 3 = 36
[4,4,3] // 36 + 4 + 4 + 3 = 47
[4,4,4] // 47 + 4 + 4 + 4 = 59
[4,4,4,4] // 59 + 4 + 4 + 4 + 4 = 75
[-1,4,4,4] // 75 - 1 + 4 + 4 + 4 = 86
[-1,-1,4,4] // 86 - 1 - 1 + 4 + 4 = 92
[-1,-1,-1,4] // 92 - 1 - 1 - 1 + 4 = 93
[-1,-1,-1,-1] // 91 - 1 - 1 - 1 - 1 = 89
[-1,-1,-1,-1,-1] // 89 - 1 - 1 - 1 - 1 - 1 = 84
TA贡献1858条经验 获得超8个赞
下面的代码也有效。
ArrayList<Integer> numbersList = new ArrayList<>();
Scanner in = new Scanner(System.in);
int number = in.nextInt();
int total = 0;
while (number>=0) { //stop at negative
//store all numbers in ArrayList
numbersList.add(number);
//for the first 10 numbers we can just add them as follows
if(numbersList.size()<=10) {
total += number;
System.out.println(total);
}
//if user imputs more than 10 numbers we need to count the total of the last 10 numbers so:
else
{
//Restore total to 0 for recount
total =0;
//iterate Arraylist backwards for the last 10 values inputed in it
for(int j = 10; j >=1 ; j--) {
total += numbersList.get(numbersList.size()-j);
}
System.out.println(total);
}
//get next number
in = new Scanner(System.in);
number = in.nextInt();
}
System.out.println(total);
添加回答
举报