【问题标题】:Java - Generates random numbers and classify them for each valueJava - 生成随机数并对每个值进行分类
【发布时间】:2021-03-17 20:03:17
【问题描述】:

我是 Java 新手。所以,我想做的是创建一个生成 25 个随机 int 值的程序,并且对于每个值,使用 if-else 语句将其分类为大于、小于或等于第二个随机生成的值。我想使用数组来访问每个元素,但我不确定除了使用数组之外我还能做什么。

import java.util.Random;

public class main {

    public static void main(String[] args){
        Random rand = new Random();
        int[] randNumber = new int[25];

        for (int i = 0; i<25; i++){
            randNumber[i] = rand.nextInt(100);
        }

        if (randNumber[i]<randNumber[i+1]){
            System.out.println("Number " + randNumber[i] + "smaller than " + randNumber[i+1]);
        }
        else if(randNumber[i]>randNumber[i+1]){
            System.out.println("Number" + randNumber[i] + "greater than" + randNumber[i+1]);
        }else if(randNumber[i] == randNumber[i+1]){
            System.out.println("Number " + randNumber[i] + "equal to " + randNumber[i+1]);
        }else{
            System.out.println("Wrong!");
        }

    }
}

我知道 if-else 部分是完全错误的,但我不知道如何到达一个数组并比较它们。当我编译它会创建 25 个随机数,但在打印部分总是显示

数字 x 大于 0

所以,[i+1] 认为总是零。

非常感谢

更新

感谢 Dawood ibn Kareem 的回答,我最终创建了 2 个 for 循环。

for (int i = 0; i<25; i++){
            randNumber[i] = rand.nextInt(100);
}

for(int i = 0; i<25; i++) {
            if (randNumber[i] < randNumber[i + 1]) {
                System.out.println("Number " + randNumber[i] + " smaller than " + randNumber[i + 1]);
            } else if (randNumber[i] > randNumber[i + 1]) {
                System.out.println("Number " + randNumber[i] + " greater than " + randNumber[i + 1]);
            } else if (randNumber[i] == randNumber[i + 1]) {
                System.out.println("Number " + randNumber[i] + " equal to " + randNumber[i + 1]);
            } else {
                System.out.println("Wrong!");
            }
 }

输出如下所示;

Number 47 equal to 47
Number 47 smaller than 90
Number 90 greater than 84
Number 84 greater than 50
Number 50 greater than 29
Number 29 smaller than 42
Number 42 smaller than 51
Number 51 smaller than 92
Number 92 greater than 8
Number 8 smaller than 31
Number 31 smaller than 87
Number 87 greater than 10
Number 10 smaller than 80
Number 80 greater than 56
Number 56 greater than 49
Number 49 smaller than 63
Number 63 greater than 33
Number 33 smaller than 64
Number 64 greater than 25
Number 25 smaller than 87
Number 87 greater than 16
Number 16 smaller than 65
Number 65 greater than 15
Number 15 smaller than 44

然后我有一个错误说;

线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常: 在 main.main(main.java:15) 处索引 25 超出长度 25

【问题讨论】:

  • 您可能应该有两个独立的循环 - 一个用于生成所有数字,一个用于进行比较。通过在同一循环中执行此操作,您将尝试在生成 randNumber[i+1] 之前与 randNumber[i]randNumber[i+1] 进行比较。
  • 评论您的更新:您的第二个循环应该在 24 而不是 25 结束,因为您引用的 i+1 将超过数组的末尾(因此出现越界异常)
  • @sprinter 非常感谢您的回答!

标签: java random


【解决方案1】:

运行 for 循环 24 次而不是 25 次,因为如果 i = 24,则索引 randNum[24] 处没有数组值(数组索引从 0 开始)(当您在 if 语句中执行 i+1 时) .

for (int i = 0; i < 24; i++)
{
  //your if-else blocks
}

【讨论】:

  • 非常感谢!但是当我这样做时,我有 24 个输出。如果我做 i = 0;我
  • @dtaskin 没问题!如果此答案对您有所帮助,您可以单击绿色复选标记将此问题标记为已回答!玩得开心编码!
【解决方案2】:

我想使用数组来访问每个元素,但我不确定除了使用数组之外我还能做什么。

好吧,如果您的要求是在没有数组的情况下执行此操作 - 您可以只生成数字并立即检查该数字是否等于或大于或小于前一个:

int n = 25;
int previous = rand.nextInt(100);
for (int i = 0; i < n - 1; i++) {
    int current = rand.nextInt(100);
    
    String comparison;
    if (previous < current) {
        comparison = "smaller than";
    }
    else if (previous > current) {
        comparison = "greater than";
    }
    else {
        comparison = "equal to";
    }
    System.out.println(String.format("Number %s %s %s", previous, comparison, current));

    previous = current;
}

【讨论】:

  • 非常感谢您的其他意见!我什至没想过要那样做..
猜你喜欢
  • 2012-10-28
  • 2011-04-14
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多