首先,我向数组输入值,并正确存储值。
稍后,当我在第二个循环上打印数组的值时,它会显示所有值的零。我不知道为什么?
Animals
这是输出:
import java.util.*;
class SumOfInt{
public static void main(String args[]){
int n=1,i=0,sum=0,k;
Scanner sc=new Scanner(System.in);
for(i=0,n=1;i<n;i++,n++){
int numarr[]=new int[n];
System.out.println("Enter a number: ");
numarr[i]=sc.nextInt();
System.out.println("numarr["+i+"]: " +numarr[i]);
if(numarr[i]==(-999)){
for(k=0;k<n-1;k++){
System.out.println("numarr["+k+"]: " +numarr[k]); \\it shows zero even after i gave it a value above
sum=sum+numarr[k];
}
System.out.println(sum);
break;
}
}
}
}
答案 0 :(得分:4)
下面:
for(i=0,n=1;i<n;i++,n++){
int numarr[]=new int[n];
每次重新进入该循环时,都会创建一个完全新数组!
相反,你应该选择这样的东西:
如果你拥有来支持可变数量的条目 - 创建一个前面有1000个空插槽的数组。 一旦。
除此之外:分开关注点。将第二个循环放入第一个循环是没有意义的。相反:让一个循环收集输入;和输出的第二个 disjunct 循环。你的解决方案要比它应该的复杂得多。
当OP要求真正增长数组时,解决方案看起来有点不同: