任何人都可以解释以下两个程序之间的区别吗?它们看起来与我相当,但它们会产生不同的输出.什么原因?
程序1:输出不正确的值; i=1
public class Test1{
public static void main(String[] args) {
int[] values = new int[] { 2, 3, 5, 1 };
int i = 0;
for (Integer integer : values) {
i =+ integer.intValue();
} // for loop ends
System.out.println("i=" + i);
}
}
Run Code Online (Sandbox Code Playgroud)
计划2:产出预期值; i=11"
public class Test2{
public static void main(String[] args) {
int[] values = new int[] { 2, 3, 5, 1 };
int i = 0;
for (Integer integer : values) {
i = i + integer.intValue();
} // for loop ends
System.out.println("i=" + i);
}
}
Run Code Online (Sandbox Code Playgroud)
sas*_*hka 17
显然,主要区别在于这一行:
i =+ integer.intValue();
Run Code Online (Sandbox Code Playgroud)
也许它打算用来i +=代替i =+第一个程序.在你的版本中,第一个程序只是在每次迭代时分配一个值,所以它的最终结果是数组中的最后一个值(即1).你的第二个程序做了它应该做的事情 - 它添加了数组中的所有元素,结果是11.
ssi*_*lar 10
您尝试添加并分配但使用了错误的运算符.
for (Integer integer : values) {
i =+ integer.intValue();
} // for loop ends
Run Code Online (Sandbox Code Playgroud)
这转化为 i = (+ integer.intvalue())
正确的是:
for (Integer integer : values) {
i += integer.intValue();
} // for loop ends
Run Code Online (Sandbox Code Playgroud)
你正在使用=+而不是+=
您可能只将阵列中的最后一个值打印在一个中,而另一个值在另一个中打印出来?
那是因为你只是在一个中重复覆盖该值,并且实际上在另一个中正确地对这些值求和.