2015-10-15 40 views
0

我的程序需要打印出3到5个随机数字10次。它是关于一个跳伞问题,其中1-22等于1分,而23-38等于两分。我创建了一个程序,每次回合有10个不同的回合,每个回合有5个随机数字,但我似乎无法打印出与特定数字相关的格式,即如果一个数字等于1,它会打印出“雪花”。打印给定随机数的具体名称;保持随机数的运行总数

我曾尝试使用if语句作为打印出每个编队的方法,但我不断收到一个错误,指出int不能成为布尔值。

package skydiving; 
import java.security.SecureRandom; 

public class SkyDiving{ 

public static void main(String[] args){ 
    int i = 1; 
    SecureRandom randomNumbers = new SecureRandom(); 

while (i<=10){ 

System.out.printf("Round %d",i++); 
System.out.println(""); 
int totalPoints = 0; 

for (int counter = 1 ; counter <= 5; counter++) 
{ 
    int dive = 1 + randomNumbers.nextInt(38); 

    if(dive == 1) 
     System.out.println("1: Snowflake"); 
    else 
    if(dive == 2) 
     System.out.println("2: Sidebody Donut"); 
    else 
    if(dive == 3) 
     System.out.println("3: Side Flake Opal"); 
    else 
    if(dive == 4) 
     System.out.println("4: Monopod"); 
    else 
    if(dive == 5) 
     System.out.println("5: Opal"); 
    else 
    if(dive == 6) 
     System.out.println("6: Stardian"); 
    else 
    if(dive == 7) 
     System.out.println("7: Sidebuddies"); 
    else 
    if(dive == 8) 
     System.out.println("8: Canadian Tree"); 
    else 
    if(dive == 9) 
     System.out.println("9: Cat+Accoridan"); 
    else 
    if(dive == 10) 
     System.out.println("10: Diamond"); 
    else 
    if(dive == 11) 
     System.out.println("11: Photon"); 
    else 
    if(dive == 12) 
     System.out.println("12: Bundy"); 
    else 
    if(dive == 13) 
     System.out.println("13: Offset"); 
    else 
    if(dive == 14) 
     System.out.println("14: Bipole"); 
    else 
    if(dive == 15) 
     System.out.println("15: Caterpillar"); 
    else 
    if(dive == 16) 
     System.out.println("16: Compressed"); 
    else 
    if(dive == 17) 
     System.out.println("17: Danish Tee"); 
    else 
    if(dive == 18) 
     System.out.println("18: Zircon"); 
    else 
    if(dive == 19) 
     System.out.println("19: Ritz"); 
    else 
    if(dive ==20) 
     System.out.println("20: Piver"); 
    else 
    if(dive == 21) 
     System.out.println("21: Zig Zag"); 
    else 
    if(dive == 22) 
     System.out.println("22: Tee"); 
    else 
    if(dive == 23) 
     System.out.println("A:Unipod"); 
    else 
    if(dive == 24) 
     System.out.println("B: Stairstep Diamond"); 
    else 
    if(dive == 25) 
     System.out.println("C: Murphy Flake"); 
    else 
    if(dive == 26) 
     System.out.println("D: Yuan"); 
    else 
    if(dive == 27) 
     System.out.println("E: Meeker"); 
    else 
    if(dive == 28) 
     System.out.println("F: Open Accordian"); 
    else 
    if(dive == 29) 
     System.out.println("G: Catacord"); 
    else 
    if(dive == 30) 
     System.out.println("H: Bow"); 
    else 
    if(dive == 31) 
     System.out.println("J: Donut"); 
    else 
    if(dive == 32) 
     System.out.println("K: Hook"); 
    else 
    if(dive == 33) 
     System.out.println("L: Adder"); 
    else 
    if(dive == 34) 
     System.out.println("M: Star"); 
    else 
    if(dive == 35) 
     System.out.println("N: Crank"); 
    else 
    if(dive ==36) 
     System.out.println("O: Satelitte"); 
    else 
    if(dive ==37) 
     System.out.println("P: Sidebody"); 
    else 
    if(dive == 38) 
     System.out.println("Q: Phalanx"); 



    if(dive <= 22){ 
     totalPoints += 1; 

    } 
    else{ 
     totalPoints += 2; 
    }  
}  
    System.out.println(); 
    System.out.println("Total points: " + totalPoints); 
    }  
    } 
} 

我设法让每个数字打印出一个特定的编队,这不是很漂亮,但她会做。我似乎无法让分数工作,这是它开始变得疯狂。如果使用三个块(23-38),这是唯一的6点移动。所以我需要设法在使用3个块后停止随机数。基本上只能得到5或6两个分数,所以我需要确定一种方式让发电机保持洗牌,直到合适的阵型返回,如果我有4个随机编队(1个指针),我不能有一个块2指针),或者是非法编队。

+0

将其编辑到您的问题。为了爱上帝,不要把它放在评论框中。 – Makoto

+1

他的代码被截断了吗?下半部分缺失。 Stack Overflow上今天必须有一个代码鲨鱼。 –

回答

0

您放置的代码片段不完整。尽管如此,我仍然试图从问题陈述中做出来。

while (i<=10) 
{ 
    System.out.printf("Round %d",i++); 
    System.out.println(""); 
    int totalDives = 0; 
    int totalPoints = 0; 

    for (int counter = 1 ; counter <= 5; counter++) 
    { 
     int dive = 1 + randomNumbers.nextInt(38); 
     totalDives += dive;   

     if(dive <= 22){ 
      totalPoints += 1; 
      System.out.print("Snowflake"); 
     } 
     else{ 
      totalPoints += 2; 
      System.out.printf("%d ", dive); 
     } 
    } 
    System.out.println(); 
} 
System.out.println("Total dives: " + totalDives); 
System.out.println("Total points: " + totalPoints); 

这会计算潜水总数,分配点数,然后总结点数。

更新

您可以使用一个String数组存储潜水文本。然后直接使用它打印没有if声明

public static void main(String[] args){ 
    int i = 1; 
    SecureRandom randomNumbers = new SecureRandom(); 
    String[] diveStyles = {"1: Snowflake", "2: Sidebody Donut", 
         "3: Side Flake Opal", "4: Monopod", "5: Opal"}; // and so on 

    while (i<=10){ 
     System.out.printf("Round %d",i++); 
     System.out.println(""); 
     int totalPoints = 0; 

     for (int counter = 1 ; counter <= 5; counter++) 
     { 
      int dive = 1 + randomNumbers.nextInt(38); 

      System.out.println(diveStyles[dive-1]); 

      if(dive <= 22){ 
       totalPoints += 1; 
      } 
      else{ 
       totalPoints += 2; 
      } 
     } 
     System.out.println(); 
     System.out.println("Total points: " + totalPoints); 
    } 
}