随机生成的X数

时间:2017-03-09 22:09:59

标签: java loops random range

我需要一个程序来随机生成一个数字,然后将那个数量的x放在自己的行上,直到它输出一行16 x,然后它就会停止。到目前为止,我的程序生成了一个数字,但从未停止输出。我确定这是我的错误,但不确定需要改变什么。这是我现在的代码。

import java.util.Random;

public static void main(String[] args)
{
    toBinary();
    randomX();
}

public static void randomX()
{
    Random num = new Random();
    int ran = num.nextInt(16+1);
    int xs = ran;

    while(xs <= 16)
    {
        System.out.print("x");
    }
}

3 个答案:

答案 0 :(得分:2)

要解决此问题,请考虑您可能需要的循环 你需要打印x一定次数,这是一个循环。我还引入了一个变量来跟踪这种打印 你需要保持打印,直到你达到16.这是另一个循环。

public static void randomX(){
  Random num = new Random();
  int xs = 0;
  //This loop keeps going until you reach 16
  while(xs <= 16){
    xs = num.nextInt(16+1);
    int x = 0;
    //This loop keeps going until you've printed enough x's
    while (x < xs)
    {
      System.out.print("x");
      x++;
    }

    System.out.println("")
  }
}

答案 1 :(得分:2)

您的版本存在许多小问题。这是一组建议的修订。

// create your random object outside the method, otherwise
// you're instantiating a new one each time.  In the long run
// this can cause awkward behaviors due to initialization.
public static Random num = new Random();

public static void randomX(){
   int ran;
   do {
      ran = 1 + num.nextInt(16); // move the +1 outside unless you actually want 0's
      int counter = 0;
      while(counter++ < ran) {
        System.out.print("x");
      }
      System.out.println();  // add a newline after printing the x's in a row
   } while(ran < 16);
}

最大的问题是你需要两个循环,一个用于生成新数字的外循环和一个用于打印当前x数的内循环。

第二个问题是你的循环正在检查数字&lt; = 16.你的所有值都是&lt; = 16,所以这是一个无限循环。

评论中的其他建议。

答案 2 :(得分:1)

您可以使用辅助计数器来管理循环并增加它以退出循环。

int i = 0;
while (i<xs){
    System.out.print("x");
    i++;
}

您可以在此处查看有关java循环的更多信息:

Tutorial about java while