我正在创建这个代码,我应该提示用户最多5个整数。我应该通过要求用户输入它们直到数组已满或用户通过输入-99退出来将5个整数存储在数组中。然后我应该打印出数组的所有值并计算平均值。问题是,当我扫描并存储值时,它向我显示第五个数字的空值而不是数字本身,并且它不计算总和。这是我一直在使用的代码片段:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
boolean cond = false;
int i = 0;
int[] number = new int[5];
double sum = 0;
do{
int num = scan.nextInt();
if(num==-99 || i==4){
for(int k=0; k<i+1; k++){
System.out.println(number[k]);
sum = sum + number[k];
}
System.out.println(sum/i);
cond = true;
}
number[i] = num;
i++;
}while(!cond);
}
这是输入:1 2 3 4 5 每个号码都在一个单独的行上 这是输出:
run:
1
2
3
4
5
1
2
3
4
0
2.5
答案 0 :(得分:0)
number[i] = num;
是将用户输入的数字添加到数组中的内容。如果他们输入-99,它就在正确的位置。如果他们只是简单地输入了所有4,那么它就在错误的地方。而且,你有它所以它实际上除以错误的数字。这样的事情应该有效:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
boolean cond = false;
int i = 0;
int[] number = new int[5];
double sum = 0;
do{
int num = scan.nextInt();
if(num!=-99){
number[i] = num;
i++;
}
if(num==-99 || i==5){
for(int k=0; k<i; k++){
System.out.println(number[k]);
sum = sum + number[k];
}
System.out.println(sum/(i));
cond = true;
}
}while(!cond);
}
另外,while循环真的很难看,你只需要两个for循环就能做得更顺畅:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] number = new int[5];
double sum = 0;
int num=0,i;
for(i=0;i<5&&num!=-99;i++){
num = scan.nextInt();
number[i] = num;
}
for(int k=0;k<i;k++){
System.out.println(number[k]);
sum+=number[k];
}
System.out.println(sum/(i+1));
}