2016-10-27 5 views
0

** ОК, Итак, я пытаюсь создать русскую игру в рулетку. Половина этого кода должна играть в одну сторону и другую по-другому (если это имеет смысл). В любом случае я сделал их на двух отдельных классах, а затем объединил их. Моя проблема возникает каждый раз, когда я пытаюсь создать оператор if, чтобы решить, какой способ его играть не работает. Полагаю, мне просто нужна помощь или подсказки, почему это так. Как мог кто-то указать мне в правильном направлении? (Я удалил свои попытки в выражении if, должен ли я поместить их обратно?)сканер не работает, если оператор

P.S Я новичок в этом. Я действительно не понимаю. И я уверен, что мой OddsEvenChoice, если утверждение неверно, но я буду беспокоиться об этом позже. **

package game; 

import java.util.Scanner; 

public class RouletteTester { 

    public static void main(String[] args) { 

     Scanner scanner = new Scanner (System.in); 
     int Mode; 

     System.out.println("Please choose how you'd like to play."); 
     System.out.println("To play by Odds & Evens, enter '1'"); 
     System.out.println("To play by Numbers, enter '2'"); 
     System.out.println("Enter game mode here: "); 

     Mode = scanner.nextInt(); 

     System.out.println("You chose game mode " + Mode); 

     Scanner in = new Scanner (System.in); 
     System.out.print("Enter roulette number here: "); 
     int Number = in.nextInt(); 

     RouletteWheel One = new RouletteWheel(); 

     One.spin(); 
     int r = One.getwinningNumber(); 

     System.out.println(r); 

     if (r == Number) 
      System.out.println("Congratulations, The" + Number + " is a winning number!"); 
     else     
      System.out.println("Sorry, " + Number + " is not a winning number."); 

     if (r == 0) 
      System.out.println("Congratulations, 0 is an automatic win!"); 

     Scanner inn = new Scanner (System.in); 
     System.out.println("Odds or Evens? Type '1' for odds" 
       + " or '2' for evens: "); 
     int Numberr = inn.nextInt(); 

     if (Numberr == 1) 
      System.out.println("You choose Odds."); 
     else 
      System.out.println("You choose Evens."); 

     One.spin(); 
     int winningNumber = One.getwinningNumber(); 
     boolean n = One.OddEvenChoice(); 
     System.out.println("The wheel landed on..."); 
     System.out.println(winningNumber); 

     if ((n == true) && (winningNumber % 2 == 0)) 
      System.out.println("You Win! E"); 
     else if ((n == false) && (winningNumber %2 == 1)) 
      System.out.println("You Win! O"); 
     else 
      System.out.println("You Lose."); 
    } 
} 
+0

Вы более конкретно о том, где проблемы происходят в коде, спасибо (вам может отредактировать ваше сообщение, чтобы уточнить) – Clay

ответ

0

Я подозреваю, ваша проблема в том, что у вас есть несколько сканеров на одном потоке (сканер и Инна как прочитанный от System.in) Я думаю, что первый сканер будет потреблять весь вход, и ничто не сделает его второму, возможно, это не так просто.

Избавьтесь от гостиницы и используйте сканер все время, и это может исправить.

+0

Итак, я пробовал, что это было неудачно. Это может быть только я. Когда я помещаю два режима в операторы if, сканеры являются единственными линиями с ошибками. –

+0

Подожди, я манекен. Поэтому на этот раз я правильно изменил все сканеры и избавился от дополнительных 2 (Scanner in = new Scanner (System.in);) строк. Ошибок нет, поэтому я думаю, это хорошо. Теперь я просто должен получить эту вещь, чтобы правильно выбрать игровой режим. Благодаря! –

1

Нет необходимости использовать несколько экземпляров сканера. Создайте его только один раз, как в начале: Scanner scanner = new Scanner (System.in); и просто используйте его каждый раз, когда вам это нужно.

Это пример, основанный на коде:

public static void main(String[] args) { 


     Scanner scanner = new Scanner (System.in); 
     int Mode; 

     System.out.println("Please choose how you'd like to play."); 
     System.out.println("To play by Odds & Evens, enter '1'"); 
     System.out.println("To play by Numbers, enter '2'"); 
     System.out.println("Enter game mode here: "); 

     Mode = scanner.nextInt(); 

     System.out.println("You chose game mode " + Mode); 

     System.out.print("Enter roulette number here: "); 
     int Number = scanner.nextInt(); 

     RouletteWheel One = new RouletteWheel(); 

     One.spin(); 
     int r = One.getWinningNumber(); 

     System.out.println(r); 

     if (r == Number) 
      System.out.println("Congratulations, The" + Number + " is a winning number!"); 
     else     
      System.out.println("Sorry, " + Number + " is not a winning number."); 

     if (r == 0) 
      System.out.println("Congratulations, 0 is an automatic win!"); 


     System.out.println("Odds or Evens? Type '1' for odds" 
       + " or '2' for evens: "); 
     int Numberr = scanner.nextInt(); 

     if (Numberr == 1) 
      System.out.println("You choose Odds."); 
     else 
      System.out.println("You choose Evens."); 


     One.spin(); 
     int winningNumber = One.getWinningNumber(); 
     boolean n = One.OddEvenChoice(); 
     System.out.println("The wheel landed on..."); 
     System.out.println(winningNumber); 


     if ((n == true) && (winningNumber % 2 == 0)) 
      System.out.println("You Win! E"); 
     else if ((n == false) && (winningNumber %2 == 1)) 
      System.out.println("You Win! O"); 
     else 
      System.out.println("You Lose."); 
    } 

И это работает:

enter image description here

Смежные вопросы