阵列打印[0]

时间:2013-12-12 22:40:18

标签: java

我即将创建一个代码,它将生成数字,放在一个数组中。之后,创建了另外两个数组,一个用于500以上的数字,以及一个低于500的数字数组。一切都正常,因为它应该是要排序的数字。正如您在下面的表格中看到的那样,即使有不同的值要添加,我也只得到[0,0]。

我的问题是为什么?该怎么办?

我也想知道如何在结果中离开[]。

(必须是数组,而不是数组列表)

提前致谢=)

结果:

Random numbers: 
[185, 406, 632, 72, 348, 771]
Antal big: 2
big: [0, 0]
Antal small: 4
small: [0, 0, 406, 0]
BUILD SUCCESSFUL (total time: 3 seconds)

代码:

Scanner user_input = new Scanner(System.in);
        int nummer[];
        int big = 0;
        int small = 0;


        System.out.print("Hur många slumptal i intervallet 0-999 önskas? ");
        int x = user_input.nextInt();

        nummer = new int[x]; 
        System.out.println("\nHär är de slumpade talen: ");
        for(int i = 0; i < x; i++)
        {
            Random rnd = new Random();
            nummer[i] = (rnd.nextInt(1000));   
            if(nummer[i] > 499){
                big++;
            } else if (nummer[i] < 500){
                small++;
            } else {
                System.out.println("Detta gick åt skogen");
            }
        }
        System.out.println(Arrays.toString(nummer));
        //RandomNumber highlow = new RandomNumber();

        int biggest [];
        biggest = new int[big];

        for(int z = 0; z<big; z++){
            if(nummer[z]>499){
                biggest[z] = nummer[z];
            }
        }

        int smallest [];
        smallest = new int[small];

        for(int y = 0; y<small; y++){
            if(nummer[y]>500){
                smallest[y] = nummer[y-1];
            }
        }
        System.out.println("Antal big: " + biggest.length);
        System.out.println("big: " + Arrays.toString(biggest));
        System.out.println("Antal small: " + smallest.length);
        System.out.println("small: " + Arrays.toString(smallest));


        //highlow.min(nummer);
        //highlow.high(nummer);
     }
}

1 个答案:

答案 0 :(得分:0)

您的第2和第3个for循环不正确。您只循环大小数字的数量。此外,你不需要两个(或实际上任何一个循环),但在这里我尝试了一点清理:

int biggest[] = new int[big];
int smallest[] = new int[small];

int currentBiggest = 0;
int currentSmallest = 0;

for(int j = 0; j < nummer.length; j++){
    if(nummer[j] <= 500){
        smallest[currentSmallest++] = nummer[j];
    }
    else {
        biggest[currentBiggest++] = nummer[j];
    }
}

顺便说一句,您的代码也有其他小问题。你想要一个数字大于500的数组和一个数字较小的数组(即499 <),但你的if是不正确的。您还应该将new Random() - 部分移出您的循环。