2015-02-03 4 views
2

Итак, я работаю над копией простой игры в кости, которая была примером из учебников Maxwell Sanchez YouTube JAVA в Eclipse. То, с чем я начал играть, - это простые способы реализации текстового меню.Два консольных входа, требуемых для System.exit (0) во время else, если

То, что я пытаюсь выполнить, - это метод ввода Y или N либо для перезапуска программы, либо для ее уничтожения. Я полный noob, придя сюда после крошечного кусочка Arduino. Мне нравится JAVA, но есть много вещей, которые я не понимаю.

Моя проблема прямо сейчас заключается в том, что все работает до сих пор, за исключением того, что если вы дойдете до конца и введите N для выхода, для этого требуется 2 входа N для выполнения инструкции else if. Это что-то, что является ошибкой? Или я просто неправильно программирую то, что я пытаюсь выполнить.

import java.util.*; 
public class diceGame 
{ 
static int money; 
static Scanner in = new Scanner(System.in); 
static Random random = new Random(); 
static String userName; 
static String tryAgain; 

public static void main(String[] args) 
{ 
    money = 1000; 
    System.out.println("Welcome to this simple dice game! " + 
      "Please enter your name."); 
    String userName = in.nextLine(); 
    System.out.println("Hey " + userName + "."); 
    rollDice(); 
} 
public static void rollDice() 
{ 
    System.out.println("You have " + money + " coins!"); 
    System.out.println("Please select a number (1-6) to bet on!"); 
    int betRoll = in.nextInt(); 
    System.out.println("Please place your bet!"); 
    int betMoney = in.nextInt(); 
    while (betMoney > money) 
    { 
     System.out.println("You don't have enough coins... you only " + 
        "have " + money + "coins."); 
     System.out.println("Please place a realistic bet!"); 
     betMoney = in.nextInt(); 
    } 

    int dice; 
    dice = random.nextInt(6)+1; 

    if (betRoll == dice) 
    { 
     System.out.println("You Win!"); 
     money+=betMoney*6; 
     System.out.println("You have " + money + " coins."); 
    } 

    else 
    { 
     System.out.println("Snap! You lost your coins!"); 
     money-=betMoney; 
     System.out.println("You have " + money + " coins."); 
    } 

    if (money <= 0) 
    { 
     System.out.println("You've lost all yer coins!"); 
     System.out.println("Play again?" + " Type y or n"); 

     if (in.next().equalsIgnoreCase("y")) 
     { 
      System.out.println("Maybe you'll win this time!"); 
      money = 1000; 
      rollDice(); 
     } 

     else if (in.next().equalsIgnoreCase("n")) 
     { 
      System.out.println("Maybe next time..."); 
      System.exit(0); 
     } 

     else 
     { 
      System.out.println("Invalid character"); 
     } 
    } 

    else 
     { 
       rollDice(); 
     } 
} 
} 

ответ

2

Сохраните ввод в переменной и сравните его ... или вам придется вводить дважды.

String choice = in.next(); 
if (choice.equalsIgnoreCase("y")) 
{ 
    System.out.println("Maybe you'll win this time!"); 
    money = 1000; 
    rollDice(); 
} 
else if (choice.equalsIgnoreCase("n")) // <-- not in.next() 

Каждый раз, когда вы звоните in.next(), вы читаете ввод пользователя.

2
if (in.next().equalsIgnoreCase("y")) 
else if (in.next().equalsIgnoreCase("n")) 

В этом коде, вы звоните in.next() дважды, один раз для каждого условия, поэтому он будет читать два входа.

Вам необходимо отделить показания от сравнения.

String input = in.next(); 
if (input.equalsIgnoreCase("y")) 
else if (input.equalsIgnoreCase("n"))