2013-11-05 147 views
0

我试图把我生成的数字到一个特定的范围,但它不断给我这个输出:把号码给了奇怪的输出

200 Generated numbers, 10 per line: 
99 Numbers from 0-20: 1 
Numbers from 20-40: 0 
Numbers from 40-60: 0 
Numbers from 60-80: 0 
Numbers from 80-100: 0 
18 Numbers from 0-20: 2 
Numbers from 20-40: 0 
Numbers from 40-60: 0 
Numbers from 60-80: 0 
Numbers from 80-100: 0 
56 Numbers from 0-20: 3 

这里是我当前的代码:

import java.util.Random; 

public class RandomStats2 { 

    public static void main(String[] args) { 
     Random random = new Random(); 
     int[] num = new int [5]; 
     System.out.println("200 Generated numbers, 10 per line: "); 
     int numbersOnThisLine = 0; 

     for(int i = 0; i < 200; i++){ 
      int nextNumber = random.nextInt(101); 
      System.out.print(nextNumber + " "); 
      numbersOnThisLine++;  

      if (numbersOnThisLine == 10){ 
       System.out.print("\n"); 
       numbersOnThisLine = 0; 
      } 

      if(i <=21) num[0]++; 
      else if(i <=41) num[1]++; 
      else if(i <=61) num[2]++; 
      else if(i <=81) num[3]++; 
      else if(i <=100) num[4]++; 
      System.out.println("Numbers from 0-20: " + num[0]); 
      System.out.println("Numbers from 20-40: " + num[1]); 
      System.out.println("Numbers from 40-60: " + num[2]); 
      System.out.println("Numbers from 60-80: " + num[3]); 
      System.out.println("Numbers from 80-100: " + num[4]);    
     } 
    } 
} 

我该如何解决这个问题?另外,如何在else if语句中设置41-60范围?

回答

1

你要检查你nextNumber所以我想你想的:

if(nextNumber <21){ num[0]++;} 
else if(nextNumber <41){ num[1]++;} 
else if(nextNumber <61){ num[2]++;} 
else if(nextNumber <81){ num[3]++;} 
else if(nextNumber <101){ num[4]++;} 

此外,使用这些{}当你正在使用的if-else。

二,循环结束后打印。

+0

使用这个,任何其他的ifs都不可能被评估,因为每个都检查相同的条件。 – Casey

+0

我的不好,修好了 –

+0

好吧,我做了你告诉我要做的事情,但是现在它将同一行上的所有数字都打印出来, – user2809115

0

将您的for循环外部的呼叫移至System.out.println()将解决重复输出的问题。此外,您当前的ifelse if语句不检查正确的值。试试这个:

if (nextNumber <= 20) num[0]++; 
else if (nextNumber <= 40) num[1]++; 
else if (nextNumber <= 60) num[2]++; 
else if (nextNumber <= 80) num[3]++; 
else if (nextNumber <= 100) num[4]++; 
0

你真的应该做的所有内循环?我不确定你想要完成的是什么,但是一个非常好的建议是在循环之外打印出来。

现在您正在打印您找到的每个随机整数。

0

看着你的代码,它看起来像你想每10次迭代打印一次范围。如果是这样,请将if语句中的打印语句移到下面。

import java.util.Random; 

public class RandomStats2 { 

    public static void main(String[] args) { 
     Random random = new Random(); 
     int[] num = new int [5]; 
     System.out.println("200 Generated numbers, 10 per line: "); 
     int numbersOnThisLine = 0; 

     for(int i = 0; i < 200; i++){ 
      int nextNumber = random.nextInt(101); 
      System.out.print(nextNumber + " "); 
      numbersOnThisLine++;  

      if (numbersOnThisLine == 10){ 
       System.out.print("\n"); 
       numbersOnThisLine = 0; 
       System.out.println("Numbers from 0-20: " + num[0]); 
       System.out.println("Numbers from 20-40: " + num[1]); 
       System.out.println("Numbers from 40-60: " + num[2]); 
       System.out.println("Numbers from 60-80: " + num[3]); 
       System.out.println("Numbers from 80-100: " + num[4]); 
      } 

      if(i <=21) num[0]++; 
      else if(i <=41) num[1]++; 
      else if(i <=61) num[2]++; 
      else if(i <=81) num[3]++; 
      else if(i <=100) num[4]++;    
     } 
    } 
} 
0

您的统计资料必须走出了这样的循环:

import java.util.Random; 

公共类RandomStats2 {

public static void main(String[] args) { 
    Random random = new Random(); 
    int[] num = new int [5]; 
    System.out.println("200 Generated numbers, 10 per line: "); 
    int numbersOnThisLine = 0; 

    for(int i = 0; i < 200; i++){ 
     int nextNumber = random.nextInt(101); 
     System.out.print(nextNumber + " "); 
     numbersOnThisLine++;  

     if (numbersOnThisLine == 10){ 
      System.out.print("\n"); 
      numbersOnThisLine = 0; 
     } 

     if(i <=21) num[0]++; 
     else if(i <=41) num[1]++; 
     else if(i <=61) num[2]++; 
     else if(i <=81) num[3]++; 
     else if(i <=100) num[4]++;    
    } 
    System.out.println("Numbers from 0-20: " + num[0]); 
    System.out.println("Numbers from 20-40: " + num[1]); 
    System.out.println("Numbers from 40-60: " + num[2]); 
    System.out.println("Numbers from 60-80: " + num[3]); 
    System.out.println("Numbers from 80-100: " + num[4]); 
} 

}

另外对于if语句,我认为你打算使用nextNumber而不是i,因为i是你循环计数器