该程序将创建一个包含10个整数的数组。数组中的每个元素都初始化为2.然后将数组的每个元素相加,得到整个数组的总数。我们期待的答案是20.看看您是否可以更正以下代码以生成正确的解决方案。
为什么即使我在sum
循环中执行了for
,也可能没有初始化错误?
public class WarmUp_01_22_2014{
public static void main(String[] args){
int[] myArray = new int[12];
int total=0;
for (int i = 0; i < 10; i++){
myArray[i] = 2;
}
for (int i = 0; i < 12; i++){
int sum = 0;
int sum += myArray[i];
}
System.out.println("The sum of the numbers in the array is " + sum);
}
}//end class WarmUp_01_22_2014
答案 0 :(得分:2)
您没有收到该代码的消息;这将无法编译,因为sum
对println
不可见。最有可能的是,您在int sum
正文中声明了main
,然后在循环中声明了另一个int sum
。您只想“创建”一次变量,然后只为其赋值。
我怀疑你真的在你的程序中使用total
;只需将第二个for
循环更改为:
for (int i = 0; i < 12; i++){
total += myArray[i]; // the variable "total" was created and set to zero above
}
答案 1 :(得分:1)
public class WarmUp_01_22_2014{
public static void main(String[] args){
int[] myArray = new int[12];
int total=0;
int sum = 0;
for (int i = 0; i < 10; i++){
myArray[i] = 2;
}
for (int i = 0; i < 12; i++){
sum += myArray[i];
}
System.out.println("The sum of the numbers in the array is " + sum);
}
}//end class WarmUp_01_22_2014
应该有效。将变量声明为更高,以便println()方法可以访问它。
答案 2 :(得分:0)
一些事情:
new int[10]
而不是new int[12]
sum
,因此在for循环之外无法访问它(因为无法保证它甚至会被声明)。sum
在每个循环中重新声明int sum += myArray[i]
- 仅声明一次i < 12
和i < 10
可以更改为i < myArray.length
,以使其更加通用。public class WarmUp_01_22_2014{
public static void main(String[] args){
int[] myArray = new int[10]; // size 10, not 12
int sum = 0; // declare sum here
for (int i = 0; i < myArray.length; i++){ // < myArray.length
myArray[i] = 2;
}
for (int i = 0; i < myArray.length; i++){ // < myArray.length
sum += myArray[i]; // add on to the sum, don't declare it here
}
System.out.println("The sum of the numbers in the array is " + sum);
}
}
答案 3 :(得分:0)
一个简单的调整,例如(i)在进入循环之前引入声明和(ii)在第二次使用变量int
时更改值类型(sum
)以避免冲突将执行特技:
public class WarmUp_01_22_2014{
public static void main(String[] args) {
int[] myArray = new int[12];
int total = 0;
for (int i = 0; i < 10; i++) {
myArray[i] = 2;
}
//declare varaible here to avoid error
int sum = 0;
for (int i = 0; i < 12; i++) {
//change int sum+=myArray[i] to sum+=myArray[i]
sum += myArray[i];
}
System.out.println("The sum of the numbers in the array is " + sum);
}
}
当编译器编译源代码时,它仍然不知道sum
之类的变量确实存在。根据编译器,仅当sum
循环被激活时才创建变量for
(我们人们知道这是不可避免的,但机器没有)。