首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我的代码只比较第一个和最后一个数组- Java

为什么我的代码只比较第一个和最后一个数组- Java
EN

Stack Overflow用户
提问于 2019-04-04 19:54:32
回答 4查看 347关注 0票数 0

我想得到我的数组的最小数目,但是我的"if“比较只检查数组的第一个和最后一个位置。

这是我的代码:

代码语言:javascript
代码运行次数:0
运行
复制
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);
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-04 20:12:36

这里甚至不需要数组。只需从0迭代到N,并检查每个随机数,如果它小于min:

代码语言:javascript
代码运行次数:0
运行
复制
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()

代码语言:javascript
代码运行次数:0
运行
复制
int[] randNumbers = new Random().ints(20, 0, 101).toArray();

然后在randNumbers[i]而不是nextInt(101)中使用相同的nextInt(101)思想

票数 0
EN

Stack Overflow用户

发布于 2019-04-04 20:06:03

问题是,在循环运行时,您没有记住最小数目。如果在循环之外创建一个变量,那么它不会在每次迭代中得到更新。您的代码可能如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
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语句的行为完全相同。
票数 0
EN

Stack Overflow用户

发布于 2019-04-04 20:06:46

尝试一下,您的int min = randNumbers[0];每次都会重置min值,因此将它移出循环。

代码语言:javascript
代码运行次数:0
运行
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55523928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档