【问题标题】:random numbers from 1 to 100 and print the first input parameter number从 1 到 100 的随机数并打印第一个输入参数号
【发布时间】:2021-01-14 06:04:39
【问题描述】:

返回类型为void,输入参数为int。我必须使用 Math.random() 生成从 1 到 100 的随机数,并且只使用 while 循环,并不断打印出第一个输入参数编号以及有多少偶数。

例如: prtEven(5) 将打印出以下偶数: 56 8 12 76 44

我的代码打印出来的数字不是随机的,它不会先打印出输入参数数字,并且由于某种原因它不会输出正确的偶数个数。有人可以帮我吗。仅 while 循环

public class MeLoop
{
    
    public int a, b;
    public String str;

    public void prtEven(int d){
        int count = 0;
        int number = d;
        int sumEven = random % 2;
        while(count <= 100) {
            int random = (int)(Math.random()*100);
            
            count++;
            System.out.print(count + " ");
        }
        if(sumEven == 0) {
            System.out.println("\tThere are: " + sumEven + " even numbers");
        }        
    }
} 

【问题讨论】:

  • 随机数应该在循环内部生成。

标签: java if-statement while-loop


【解决方案1】:

您在 while 循环内定义随机变量,但您也在循环外使用它

int sumEven = random % 2;

函数的参数也是d(必须写多少个偶数)所以你的循环语句应该是这样的

while(count<d)

【讨论】:

    【解决方案2】:

    如果 count 是找到的偶数随机数,while 循环应该循环到count = d。 在每次迭代中,您计算​​随机(您正确执行)。但是在每个新分配的值之后,您必须评估新生成的数字是否为偶数。如果是偶数 -> 打印并在计数器上加 1:

    System.out.println(number);
    while(count<number) {
        int random = (int)(Math.random()*100);
        if(random%2==0)
        {
            System.out.println(" "+random);
            count++;
        }
    }
    

    【讨论】:

      【解决方案3】:

      问题措辞不佳。

      我相信你想生成 1 到 100 之间的数字,输出所有生成的数字,但只计算选择的偶数个数。

      请注意,要在可能的随机值中包含 100,您需要将 Math.random() 返回的值加 1:

        public static void main(String[] args) {
          prtEven(5);     
        }
      
        public static void prtEven(int d) { 
          int count = 0;
          int evenCount = 0;
          System.out.print(d + ": ");
          while(count < d) {
              int random = (int)(Math.random()*100 + 1);
              System.out.print(random + " ");
              if (random % 2 == 0) {
                evenCount++;
              }      
              count++;
          }
          System.out.println();
          System.out.println("\tThere were: " + evenCount + " even numbers");  
        }
      

      【讨论】:

        【解决方案4】:

        所以你基本上想生成 1 到 100 之间的 d 个随机偶数。

        试试这段代码,也简单一点:

        public void prtEven(int number){
            int count = 0;
            int random;
            int sumEven;
        System.out.println("Input parameter: " +number);  
            while(count < number) {
                random = (int)(Math.random()*100 + 1);
                sumEven = random % 2;
          if(sumEven == 0) {
                System.out.print(random + " ");     
                count++;
            }  
            }        
        }
        

        【讨论】:

          猜你喜欢
          • 2021-12-28
          • 2011-07-09
          • 1970-01-01
          • 1970-01-01
          • 2014-01-19
          • 1970-01-01
          • 2011-01-23
          相关资源
          最近更新 更多