我想得到我的数组的最小数目,但是我的"if“比较只检查数组的第一个和最后一个位置。
这是我的代码:
int[] randNumbers = new int[20]; //deklaracja nowej tablicy 20-elementowej
Random r = new Random(); // Dodana metoda random do losowania
for(int i=0; i<randNumbers.length; i++) {
randNumbers[i] = r.nextInt(101);
int min = randNumbers[0];
System.out.println("Number "+i+": " + randNumbers[i]);
if (randNumbers[i] < min) {
min = randNumbers[i];
}
if (i == randNumbers.length-1) {
System.out.println("Min number is: " + min);
}
}
发布于 2019-04-04 12:12:36
这里甚至不需要数组。只需从0迭代到N
,并检查每个随机数,如果它小于min:
Random r = new Random();
int min = 101; // assign max value 101 before loop
for(int i = 0; i < 20; i++) {
int number = r.nextInt(101);
System.out.println("Number " + i + ": " + number);
if (number < min) {
min = number;
}
}
System.out.println(min);
如果要使用数组,可以在此之前初始化它。例如,使用Random.ints()
int[] randNumbers = new Random().ints(20, 0, 101).toArray();
然后在randNumbers[i]
而不是nextInt(101)
中使用相同的nextInt(101)
思想
发布于 2019-04-04 12:06:03
问题是,在循环运行时,您没有记住最小数目。如果在循环之外创建一个变量,那么它不会在每次迭代中得到更新。您的代码可能如下所示:
int[] randNumbers = new int[20]; //deklaracja nowej tablicy 20-elementowej
Random r = new Random(); // Dodana metoda random do losowania
int min = 0;
for(int i=0; i<randNumbers.length; i++) {
int number = r.nextInt(101);
if(i == 0) min = number;
randNumbers[i] = number;
System.out.println("Number "+i+": " + number);
min = Math.min(min, number);
}
System.out.println("Min number is: " + min);
有几件事要注意:
min
被移出循环之外。这是为了确保它在整个循环中是持久的,并且不会在循环的每一次迭代中被更新。number
。这是为了防止您不断调用看起来更好的randNumbers[i]
,据我所知,它稍微加快了速度。它还使更改变量一次变得更容易,并使其在任何需要的地方都有效。S.O.P
被移出循环之外。如果您只需将语句放在循环结束后的一行,则检查循环是否位于最后一个元素中没有意义。它在功能上也是一样的,但这看起来更好。if
语句来设置min,而是使用Math.min
的输出。这只是一个表面上的改变,并与if
语句的行为完全相同。发布于 2019-04-04 12:06:46
尝试一下,您的int min = randNumbers[0];
每次都会重置min值,因此将它移出循环。
int min = 100;
for(int i=0; i<randNumbers.length; i++) {
randNumbers[i] = r.nextInt(101);
System.out.println("Number "+i+": " + randNumbers[i]);
if (randNumbers[i] < min) {
min = randNumbers[i];
}
}
System.out.println("Min number is: " + min);
https://stackoverflow.com/questions/55523928
复制相似问题