我即将创建一个代码,它将生成数字,放在一个数组中。之后,创建了另外两个数组,一个用于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);
}
}
答案 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()
- 部分移出您的循环。