2015-03-26 3 views
0

Цель этой программы - сделать игру Rock Paper Scissors. Мне удалось сделать это, однако я не могу заставить его зациклиться, несмотря ни на что, что я пробую. Я пробовал:Условия Java Confusion? (Начинающий)

while (index = 0) 
while (index < gamesCount) 

Однако, в то время как мой индекс 0 и мое состояние говорит while (index != 0), это, кажется, единственное условие, которое запускает программу, но она не будет повторяться независимо. Как я могу получить свою игру в цикле?

import java.util.Scanner; 
import java.util.Random; 
public class RockPaperScissors { 
    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     Random randomGen = new Random(); 
     //Variables 
     String player1; 
     int cpu; 
     int start = 1; 
     int end = 3; 
     int index = 0; 

     // 1 = Rock | 2 = Scissors | 3 = Paper 
     //Code 
     System.out.println("Welcome to Rock, Paper, Scissors!"); 
     while (index != 0) { 
      System.out.print("Rock, Paper, or Scissors?: "); 
      player1 = in.nextLine(); 
      cpu = randomGen.nextInt(3); 
      System.out.println(cpu); 

      if (player1.equals("Rock") && (cpu == 2)) { 
        System.out.println("You lose!"); 
      } else if (player1.equals("Rock") && (cpu == 1)) { 
        System.out.println("You win!"); 
      } else if (player1.equals("Rock") && (cpu == 0)) { 
       System.out.println("Draw!"); 
      } 

      // -------------------- 

      if (player1.equals("Scissors") && (cpu == 2)) { 
        System.out.println("Draw!"); 
      } else if (player1.equals("Scissors") && (cpu == 1)) { 
        System.out.println("You win!"); 
      } else if (player1.equals("Scissors") && (cpu == 0)) { 
        System.out.println("You lose!"); 
      } 

      //--------------------- 

      if (player1.equals("Paper") && (cpu == 2)) { 
        System.out.println("You lose!"); 
      } else if (player1.equals("Paper") && (cpu == 1)) { 
        System.out.println("You win!"); 
      } else if (player1.equals("Paper") && (cpu == 0)) { 
        System.out.println("Draw!"); 
      } 
     } 
    } 
} 
+0

'в то время как (индекс

+0

PS на данный момент в вашей программе 'index' всегда равен нулю, поэтому' index! = 0' всегда будет false, поэтому программа никогда не войдет в этот блок кода. Когда вы пытались «while (index = 0)», вы, вероятно, имели в виду «while (index == 0)), что сделало бы цикл игры бесконечно на данный момент. Вы должны понимать, что '=' является оператором присваивания (т. Е. Дает переменную значение), а '==' - это оператор сравнения равенства (т. Е. Тестирование - два значения одинаковы) в Java. –

ответ

1

У вас есть переменная индекса устанавливается в 0. Условие время цикла говорит, если индекс не равен 0, выполнить код в цикле. Поскольку ваш индекс равен 0, инструкции в цикле не будут выполнены. Кроме того, вам нужно будет обновить индексную переменную в цикле, чтобы, если условие, которое вы ищете, выполняется, код прекратит цикл. т.е.

int gamesPlayed = 0; 
int gamesRequested = 3; // or get this from the user 

while (gamesPlayed < gamesRequested){ 
    String player1Choice = in.nextLine(); 
    if(!"".equals(player1)){ 
    // your code 
     gamesPlayed++; 
    } else { 
     System.out.print("Rock, Paper, or Scissors?: "); 
    } 
} 
+0

Я сделал это! Благодаря! Но единственная проблема теперь в том, что я запускаю ее и вкладываю в что-то вроде того, что хочу играть в 3 игры ... в первый раз, когда он просит ваш вариант, он говорит это дважды «Рок, Бумага или Ножницы: Скала, Бумага или Ножницы»: <- Они собраны как 2 игры, хотя я могу только ввести один раз – CoopersInc

+0

Когда игрок вводит количество игр, которые они хотели бы сыграть, ваш код затем генерирует случайное число и затем распечатывает его. Эта распечатка подбирается сканером, а затем ваши условия не выполняются, поэтому цикл будет выполняться снова. Я проверил результаты вашего сканера после входа в цикл, чтобы узнать, есть ли у него значение, которое вы ищете, а если нет, попросите Rock, Paper или Scissors. т.е. что-то вроде отредактированного ответа выше ... –

1

Две ошибки:

while (index != 0);

это весь цикл. он заканчивается либо в конце блока {} (которого у вас нет), либо в первом; который сразу после утверждения.

Правильно это, хотя, и это еще не будет цикл:

int index = 0; 

     // 1 = Rock | 2 = Scissors | 3 = Paper 



     //Code 
     System.out.println("Welcome to Rock, Paper, Scissors!"); 
     while (index != 0); 

индекс = 0, так что (! = Индекс 0) никогда не возвращает истину.

1

Ваш индексная переменная устанавливается в значение 0. Ваш цикл в то время как говорит

while (index != 0); 

Что означает, в то время как индекс не 0, запустить свой код. Проблема заключается в том, что ваш код никогда не будет запущен, потому что ваше значение индекса всегда 0. Попробуйте изменить его на другое значение (например, 5), и оно должно работать сейчас.

:)