显示空值而不是标记值

时间:2017-06-17 00:13:13

标签: java arrays

我正在创建这个代码,我应该提示用户最多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

1 个答案:

答案 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));      
}