【问题标题】:Random integer from an array数组中的随机整数
【发布时间】:2016-01-27 17:54:40
【问题描述】:

我对 Java 还很陌生,我只是在使用多个类和使用 System.out.println 来练习我的技能。

我正在尝试制作一个程序,您可以在其中与计算机进行“对话”。我想尝试做的不是每次运行控制台时计算机都具有相同的年龄,而是使用数组列出随机年龄的负载,然后随机选择这些年龄。在我的计算机课上,我有:

    static int [] compAge = {19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};

在我的主要对话课上,我有:

int Uage = input.nextInt(); // (Uage is user age)
System.out.println("That's cool! You're " +Uage+ ". I'm " + (Computers age here) + " myself. Where do you live?");

我已经阅读了一下,发现代码如

compAge[new Random().nextInt(compAge.length)]

但老实说,我对数组和使用随机函数(我已经导入它)的了解非常有限,我不确定该去哪里。

任何帮助将不胜感激。谢谢大家。

【问题讨论】:

  • 你的问题是什么,你想达到什么目标?

标签: java arrays random


【解决方案1】:
compAge[new Random().nextInt(compAge.length() )]

new Random().nextInt() 生成一个随机正数。如果您使用compAge.length(),则设置最大值(独占,因此永远不会被选中)。

这样,您每次启动程序时都会获得一个随机年龄。

【讨论】:

    【解决方案2】:

    您希望生成一个随机数。 Math.random 的一般用法是:

    // generates a floating point random number greater than 0 
    // and less  than largestPossibleNumber
    float randomNumber = Math.random() * largestPossibleNumber;
    
    // generates an integer random number between greater than 0 
    // and less than largestPossibleNumber
    int randomNumber = (int)(Math.random() * largestPossibleNumber);
    
    // generates an integer random number greater than 1 
    // and less than or equal to largestPossibleNumber
    int randomNumber = (int)(Math.random() * largestPossibleNumber) + 1;
    

    【讨论】:

      【解决方案3】:

      改用 Math.Random:

      int age = ((int)Math.random()*13)+19;
      

      它会给你一个介于 0 到 12 之间的数字,然后加上 19! 好处是您只需更改此处的值即可更改年龄范围,而无需将值添加到数组中。

      【讨论】:

        【解决方案4】:

        如果你想从数组中随机选择,请使用:

             static int [] compAge = {19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
        

        这样你就有了数组的随机索引:

              int age = new Random().nextInt(compAge.length);
        

        并显示为这样的值:

            System.out.println("Random value of array compAge  : " + compAge[age]);
        

        完整代码如下:

            import java.util.Random;
            import java.util.Scanner;
            public class MainConversation {
        
             public static void main (String[] args) {
               Scanner input = new Scanner (System.in); 
               int [] compAge = {19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; 
              System.out.println("Enter a random number between 0 and  "+ (compAge.length-1));
             int numb;
            while(input.hasNextInt() && (numb = input.nextInt()) < compAge.length){
         // int age = new Random().nextInt(compAge.length);
              System.out.println("Random value of array compAge : " + compAge[numb]); 
              }
            } 
           } 
        

        【讨论】:

        • 您好。老实说,我没有拒绝你,我从来没有为试图帮助我的人那样做。在我的计算机类中,我是否需要创建一个构造函数,或者因为 int [] compAge 是静态的,我可以离开这个?因为在我的 mainConversation 中说 + compAge[age]) 是未定义的?再次感谢,我很感激。
        • 尝试发布你的课程@CalumMullen
        • 当然。所以我的电脑类是:import java.util.Random;公共类计算机 { static int [] compAge = {19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; static int compAge = new Random().nextInt(compAge.length); }
        • 然后在我的 MainConversation 类中我得到了: import java.util.Scanner;公共类 MainConversation { public static void main (String[] args) { Scanner input = new Scanner (System.in); System.out.println("数组compAge的随机值:" + compAge[age]); } }
        • 抱歉是这样的,我试着把每一行分开但是我没有用这个网站太多,不知道你是否可以输入问题中的代码?
        猜你喜欢
        • 1970-01-01
        • 2015-09-07
        • 1970-01-01
        • 2018-04-16
        • 2013-09-16
        • 1970-01-01
        • 2010-12-09
        • 2018-09-07
        • 1970-01-01
        相关资源
        最近更新 更多