2016-11-25 34 views
0

我試圖做一個小程序thar拋出「reservaDados」數量的骰子並比較「dado」(誰是1-10之間的數字)到指定的dificulty。然後我想打印退出次數,失敗次數和超級錯誤次數,但是我似乎遇到了循環工作次數的問題,它只打印了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

在上次迭代中,不再進行計數,只打印結果。所以你有效地錯過了一次迭代。

可以通過刪除第一個else或通過執行一次額外的迭代來修復。

但是將整個結果打印出來並直接放在循環之後。這將使代碼的意圖更清晰。

0

蒂洛是正確的,在它不到風度,因爲療法是打印先算骰子循環的最後一關,我只是抽放出來的打印,並粘貼在結束這樣的:

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");} 
} 

} }

它被修復了,謝謝!