继续尝试使用应用程序,我再次陷入下一个对象。
上次我询问我的Performer.java对象,该对象接收一个包含5个整数的数组。
这次我试图通过我的Calculations对象来操纵数据。
(如果我标记了错误的东西,请纠正我)
import java.util.List;
public class Calculations {
public static int performCalcs() {
Performer getInput = new Performer();
List<Integer> arrayOne = getInput.getUnit();
for(int i=0 ; i<=arrayOne.size() ; i++) {
int sumTotal = 0;
return sumTotal;
}
}
}
我真的被卡住了。我知道它没有任何意义,但我想要做的是将我的数组中的所有数字相加,并计算数组中数字的平均值。
我认为我正确地做了“i”,并且我能够将我的数组检索到arrayOne,但是不知道如何实现“i”并使其执行加法或乘法,直到i&lt; = arrayOne。大小
谢谢你们!
答案 0 :(得分:2)
for(int i=0 ; i<=arrayOne.size() ; i++){
int sumTotal = 0;
return sumTotal;
}
您在上面的代码中所做的是,您正在进入循环,并在第一次交互后返回sumTotal(将为0)
这就是你想要做的事情
int sumTotal = 0; // declare the variable you want to to summerize outside the loop. If you declare it inside the loop it will be garbage collected once the loop finishes and the variable is lost
for(int i=0 ; i<arrayOne.size() ; i++){
sumTotal+=arrayOne.get(i); // add the value that is at the current index each iteration
}
//After the loop, somTotal will have the total added value of the integers in the `List`. Now you can continue from here
答案 1 :(得分:1)
sumTotal
移到 for循环之外。否则每次都会重新初始化sumTotal
变量。i < arrayOne.size()
。 O.w.你会得到一个IndexOutOfBoundsException arrayOne.get(i)
average
除以sumTotal
列表中的值数来计算arrayOne
值。以下是代码:
import java.util.List;
public class Calculations {
public static int performCalcs() {
Performer getInput = new Performer();
List<Integer> arrayOne = getInput.getUnit();
int sumTotal = 0;
// Sum the numbers in the array
// Repeat until i < arrayOne.size()
for (int i = 0; i < arrayOne.size(); i++) {
int num = arrayOne.get(i);
sumTotal += num;
}
// Check that the array is not empty.
// If it is not, compute the average, o.w. return 0.
double avg = arrayOne.isEmpty() ? .0 : (sumTotal / arrayOne.size());
System.out.println("average: " + avg);
return avg;
}
}
答案 2 :(得分:0)
最好的方法是使用for-each循环:
int sumTotal = 0;
for(Integer val: arrayOne) {
sumTotal += val.intValue();
}
答案 3 :(得分:0)
注意如何在循环中返回sumTotal,这意味着在第一次循环时它返回第一个值。你想要它说
import java.util.List;
public class Calculations {
public static int performCalcs(){
Performer getInput = new Performer();
List<Integer> arrayOne = getInput.getUnit();
int sumTotal = 0;
for(int i=0 ; i<arrayOne.size() ; i++){
sumTotal+=arrayOne.get(i);
}
return sumTotal;
}
}
返回java(和大多数编程语言)中的函数,函数中可以有很多函数,并且它找到函数的第一个函数结束并在返回后返回whatevers,例如
public double someFunction(int a){
if (a!=5){
return a;
}else{
return 12;
}
return 999; //this return is never used under any circumstances because the function has already returned, good IDEs won't even allow it
}
两次返回并使用它找到的第一个
编辑: 正如Maroun Maroun正确地指出for循环应该是
for(int i=0 ; i<arrayOne.size() ; i++){
不是
for(int i=0 ; i<=arrayOne.size() ; i++){
这是因为java数组索引从0开始,因此包含5个条目的数组将具有索引0,1,2,3,4
答案 4 :(得分:0)
要总结任何Iterable
中的所有数字,您需要执行此操作:
//Declare the variable to hold the total outside the loop.
int total = 0;
//Loop over the integers to sum.
for (Integer i : integers)
{
//Add the current integer to the total.
total += i;
}
//The total will now equal the sum of all the integers.
System.out.println("Total: " + total);
System.out.println("Average: " + (total / integers.size()));
您的代码缺少的两个重要位是:
答案 5 :(得分:0)
我想它应该看起来像这样
public class Calculations {
public static int performCalcs(){
Performer getInput = new Performer();
List<Integer> arrayOne = getInput.getUnit();
for(int i=0 ; i<=arrayOne.size() ; i++){
int sumTotal += i;
}
return sumTotal;
}
}
答案 6 :(得分:0)
你应该将总和初始化和退出循环
public static int performCalcs(){
Performer getInput = new Performer();
List<Integer> arrayOne = getInput.getUnit();
int sumTotal = 0;
for(int i=0 ; i < arrayOne.size(); i++){
return sumTotal += arrayOne.get(i);
}
return sumTotal;
}
答案 7 :(得分:0)
这里的问题是你在循环中使用“return”。 i ++部分很好。使用循环外部的返回。上面的所有答案都表明了这一点。
如果你在循环中使用“return”,它只会迭代一次。
答案 8 :(得分:0)
将int sumTotal = 0;
移出循环(上方),将return ...
移出(下方)。在循环内放sumTotal += arrayOne[I]
。你正在努力学习,不是吗?