| * |
| * |
| * |
| * |
| * |
| * |
| * |
| * |
| * |
| * |
| * |
| * |
|* |
Muszę wydrukować coś w rodzaju powyższego wykresu ASCII, aby rozwiązać problem Zagłady Gamblera. Gdzie bramka & bramka jest przyjmowana jako args. W lewo najbardziej | reprezentuje 0 dolarów, prawo najbardziej | reprezentuje cel, a * oznacza gotówkę w kasie. Mój program jest poniżej:Zrujnowanie Gambler ASCII w Javie
public class RuinPath {
public static void main(String[] args) {
// TODO - Your solution
int stake = Integer.parseInt(args[0]); // gambler's stating bankroll
int goal = Integer.parseInt(args[1]); // gambler's desired bankroll
{
int i = 0;
if (i == 0) {
System.out.print("|");
i++;
while (i < stake) {
System.out.print(" ");
i++;
if (i == stake) {
System.out.print("*");
i++;
while (i > stake && i < goal) {
System.out.print(" ");
i++;
if (i == goal) {
System.out.print("|");
i = 0;
System.out.println();
{
if (Math.random() < 0.5) {
stake++; // win $1
} else {
stake--; // lose $1
}
if (stake == 1 || stake == goal - 1);
break;
}
}
}
}
}
}
}
}
}
co drukuje ten program mimo to:
| * |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
*
Dlaczego mój program nie pętli tak, że mogę dostać w lewo najbardziej | wydawać się reprezentować 0 dolarów przez całą drogę? Mam to, więc i = 0; na końcu pętli, aby po powrocie na pętlę powrócić do pętli, aż stawka będzie wynosić 1 lub mniej niż cel. Zamiast tego ponownie pętli od środka programu.
Byłoby ciężko doświadczony programista nie popełnić błędu takiego, ze względu na swój przypadkowy wcięcia. –
http://prettyprinter.de –