为什么这段代码返回一个满是零的数组?

时间:2015-03-19 13:01:47

标签: java

此代码只抽出一个0的数组。我不知道为什么。它一定是简单的,所以我提前道歉,但现在很早就在我的键盘上睡着了。它只是一个类的项目(我是Java的新手,但我已经做了一段时间的c ++),当我稍后回到家时,我会再看一遍,但任何帮助仍然会很棒。


public static void main(String[] args){
    Scanner inpt = new Scanner(System.in);          

    int[] topTen = new int[10];
    int foo = 0, bogie = 0;
    int lo = 0, hi = 0, swit = 0;

    for(int b = 0; b < 15; b++){
        lo = inpt.nextInt();

        hi = inpt.nextInt();

        for(int c = 0; c < topTen.length; c++) {    
            if((hi-lo) > topTen[c]) {
                foo = topTen[c];
                for(int d = c + 1; d < topTen.length; d++) {
                    swit = (swit == 0) ? 1 : 0;
                    switch(swit) {
                        case 0:
                            foo = topTen[d];
                            topTen[d] = bogie;
                            break;
                        case 1:
                            bogie = topTen[d];
                            topTen[d] = foo;
                            break;
                    }
                }
            }
        }               
    }
}

此次展开后,topTen充满了0 s

4 个答案:

答案 0 :(得分:3)

看起来您为数组元素分配值的唯一位置是:

topTen[d] = foo;

但是,您唯一一次为foo分配值的是:

foo = topTen[c];

foo = topTen[d];

因此foo和数组的元素都保持为0。

更正:您还将bogie分配给数组的元素,反之亦然,但这不会改变任何内容,因为bogie也保持为0。

答案 1 :(得分:1)

下面

int foo = 0; int bogie = 0;

并且您只是将这两个值添加到数组int [] topTen。

答案 2 :(得分:0)

从我在您的代码中看到的情况来看,您使用的唯一非零数字是Rlo = 99。在你的for循环中,你只使用等于零的数字,所以你当然会得到一个只包含零的数组。

答案 3 :(得分:0)

我现在回家了,我更清醒了。我查看了我的代码,我的工作很棒。我忘记将topTen[c]指定为(hi-lo),直到现在才意识到这一点。谢谢。