2016-11-25 21 views
0

私は小さなプログラムを作成しようとしています。tharは "reservaDados"の数のサイコロを投げて、 "dado"(1〜10の数字です)を特定の難易度と比較します。それから私は出口の数のカウントを印刷したい、失敗し、ultrafailsが、私はループの回数の問題があるように見える、それは9結果を印刷し、私はなぜ、私は魅力を見つけるように見えないそれはカウンターと何かをしなければならないのですか?ダイスローラーJavaは無作為な結果を返しません

import java.util.*; 

public class ProgramTUI { 
    public static void main(String[] args) { 
     Scanner var = new Scanner(System.in).useLocale(Locale.ENGLISH); 
     System.out.print("Cuantos dados lanzas?"); 
     int reservaDados = var.nextInt(); 
     System.out.print("Cual es la dificultad?"); 
     int dificultad = var.nextInt(); 
     int i = 0; 
     int numero_exitos = 0; 
     int numero_fracasos = 0; 
     int numero_pifias = 0; 
     while (i < reservaDados) { 
      i++; 
      int dado = (int) (Math.random() * 10) + 1; 
      if (reservaDados == i) { 
       System.out.println("Has sacado " + numero_exitos + " exitos, " + numero_fracasos 
         + " fracasos, " + numero_pifias + " pifias"); 
      } else if (dado == 1) { 
       numero_pifias++; 
      } else if (dado < dificultad) { 
       numero_fracasos++; 
      } else { 
       numero_exitos++; 
      } 
     } 
    } 
} 

答えて

2

最後の繰り返しでは、それ以上カウントが行われず、結果だけが出力されます。だからあなたは効果的に1回の反復を欠場する。

最初のelseを削除するか、もう1回繰り返して修正することができます。

しかし、結果の印刷全体をループから取り出して、ループの直後に配置してください。それはコードの意図をはるかに明確にするでしょう。

0

THERは私がちょうどプリントアウトtaked、このような終わりに貼り付け、最初の印刷であるため、ティロが、それはサイコロを数えるdosn'tループの最後のパスで、権利である:

import java.util.*; 

public class ProgramTUI { 

public static void main(String[] args) { 

Scanner var = new Scanner(System.in).useLocale(Locale.ENGLISH); 

System.out.print("Cuantos dados lanzas?"); 

int reservaDados= var.nextInt(); 

System.out.print("Cual es la dificultad?"); 

int dificultad= var.nextInt(); 

int i=0; 
int numero_exitos=0; 
int numero_fracasos=0; 
int numero_pifias=0; 

while (i < reservaDados){ 
    i++; 
    int dado= (int) (Math.random() * 10) + 1; 

    if (dado == 1) {numero_pifias++;} 
    else if (dado < dificultad) {numero_fracasos++;} 
    else {numero_exitos++;} 

    if (reservaDados == i){System.out.println("Has sacado "+numero_exitos+" exitos, "+numero_fracasos+" fracasos, "+numero_pifias+" pifias");} 
} 

} }

これは修正されました。ありがとうございます!

関連する問題