Re: Java problem

It's exactly what the error says:
else if (userChoice.compareTo("r") > 0 or userChoice.compareTo("p") > 0

What's wrong with this expression?  Read up on boolean expressions as a hint.

It might also help to think about another way to represent the game states:
-  why do you have a string representation for one and a numbered
representation for another?
-  can you think of a way to save the outcome of the game given the
two game states using a two dimensional array?



On 11/24/10, Gilbert Neiva <gneiva@xxxxxxx> wrote:
> I'm still having problems with my Rock Paper Scissors application. I changed
> the program code in the driver class as follows.
>
> import java.util.Scanner;
>
> public class RockPaperScissorsDriver
> {
>  public static void main(String[] args)
>  {
>   RockPaperScissors userGame; // Holds user's enumeration value
> RockPaperScissors compGame; // Holds computer's enumeration value
>   final String TITLE = "Rock, Paper, Scissors"; // Game chant
> final String PAPERCOVERS = "Paper covers rock:";
> final String SCISSORSCUTS = "Scissors cuts paper:";
> final String ROCKSMASH = "Rock smashes scissors:";
> final String IWIN = "I win!";
> final String YOUWIN = "You win!";
> String userChoice; // Holds user's choice
>   int compChoice; // Holds computer's choice
>   int wins = 0; // Holds user's number of wins
>   int ties = 0; // Holds number of ties between user and computer
>   Scanner inData = new Scanner(System.in); // Scanner object
>
> do
>   {
> // Print statement asks user to enter choice
>  System.out.println("Enter r for rock, p for paper, or s for scissors " +
>    "or any other key to quit:");
>  userChoice = inData.nextLine(); // Get userChoice
>  userChoice = userChoice.toLowerCase(); // Switch userChoice to lowercase
>
>  // Computer makes choice
>  compChoice = (int)(3.0 * Math.random()) + 1;
>
> // If user chooses r and computer chooses 2
>  if ((userChoice.equals("r")) && (compChoice == 2))
> {
>   userGame = RockPaperScissors.rock; // Change value of userGame
>   compGame = RockPaperScissors.paper; // Change value of compGame
>
>   // Print statement tells user his or her choice
>   System.out.println("You chose " + userGame + ".");
>
>   // Print statement tells user computer's choice
>   System.out.println("I chose " + compGame + ".");
> System.out.println(TITLE); // Print game chant
> System.out.println(PAPERCOVERS); // Print Paper covers rock
>
> // Print statement tells user computer wins
> System.out.println(IWIN);
> }
>
>  // If user chooses p and computer chooses 3
>  else if ((userChoice.equals("p")) && (compChoice == 3))
> {
>   userGame = RockPaperScissors.paper; // Change value of userGame
>   compGame = RockPaperScissors.scissors; // Change value of compGame
>
>   // Print statement tells user his or her choice
>   System.out.println("You chose " + userGame + ".");
>
>   // Print statement tells user computer's choice
>   System.out.println("I chose " + compGame + ".");
> System.out.println(TITLE); // Print game chant
> System.out.println(SCISSORSCUTS); // Print scissors cuts paper
>
> // Print statement tells user computer wins
> System.out.println(IWIN);
> }
>
>  // If user chooses s and computer chooses 1
>  else if ((userChoice.equals("s")) && (compChoice == 1))
> {
>   userGame = RockPaperScissors.scissors; // Change value of userGame
>   compGame = RockPaperScissors.rock; // Change value of compGame
>
>   // Print statement tells user his or her choice
>   System.out.println("You chose " + userGame + ".");
>
>   // Print statement tells user computer's choice
>   System.out.println("I chose " + compGame + ".");
>   System.out.println(TITLE); // Print game chant
>  System.out.println(ROCKSMASH); // Print rock smashes scissors
>
> // Print statement tells user computer wins
>  System.out.println(IWIN);
> }
>
> // If computer chooses 1 and user chooses p
>  else if ((compChoice == 1) && (userChoice.equals("p")))
> {
>   compGame = RockPaperScissors.rock; // Change value of compGame
>   userGame = RockPaperScissors.paper; // Change value of userGame
>
>   // Print statement tells user his or her choice
>   System.out.println("You chose " + userGame + ".");
>
>   // Print statement tells user computer's choice
>   System.out.println("I chose " + compGame + ".");
>   System.out.println(TITLE); // Print game chant
> System.out.println(PAPERCOVERS); // Print paper covers rock
>
> // Print statement tells user he or she wins
> System.out.println(YOUWIN);
> wins++; // Increment wins by 1
> }
>
>  // If computer chooses 2 and user chooses s
>  else if ((compChoice == 2) && (userChoice.equals("s")))
> {
>   compGame = RockPaperScissors.paper; // Change value of compGame
>   userGame = RockPaperScissors.scissors; // Change value of userGame
>
>   // Print statement tells user his or her choice
>   System.out.println("You chose " + userGame + ".");
>
>   // Print statement tells user computer's choice
>   System.out.println("I chose " + compGame + ".");
>   System.out.println(TITLE); // Print game chant
> System.out.println(SCISSORSCUTS); // Print scissors cuts paper
>
> // Print statement tells user he or she wins
> System.out.println(YOUWIN);
> wins++; // Increment wins by 1
> }
>
>  // Ifcomputer chooses 3 and user chooses r
>  else if ((compChoice == 3) && (userChoice.equals("r")))
> {
>   userGame = RockPaperScissors.rock; // Change value of userGame
> compGame = RockPaperScissors.scissors; // Change value of compGame
>
> //Print statement tells user his or her choice
> System.out.println("You chose " + userGame + ".");
>
> //Print statement tells user computer's choice
> System.out.println("I chose " + compGame + ".");
> System.out.println(TITLE); // Print game chant
> System.out.println(ROCKSMASH); // Print rock smashes scissors
>
> // Print statement tells user he or she wins
> System.out.println(YOUWIN);
> wins++; // Increment wins by 1
> }
>
>  else if (userChoice.compareTo("r") > 0 or userChoice.compareTo("p") > 0 or
> userChoice.compareTo("s") > 0)
>   {
>  //Print statement ending game
>  System.out.println("Thanks for playing.");
>  }
> else // Otherwise
> {
>  // Print statement tells user is tied with computer
>   System.out.println("We are tied!");
>  ties++; // Increment ties by 1
>  }
>  }
>
> // Until user chooses r, p, or s
> while (userChoice.compareTo("r") > 0 or userChoice.compareTo("p") > 0 or
> userChoice.compareTo("s") > 0);
>
> // Print statement tells user number of wins and number of ties
> System.out.println("You have " + wins + " wins and " + ties + " ties.");
>   }
>  } // End of class
>
> The enum class is still the same.
>
> // Enumeration RockPaperScissors contains fields for the game rock,
> //      paper, scissors.
> public enum RockPaperScissors { rock, paper, scissors }
>
> When I try to compile the application, I get the following error.
>
> C:\Users\user\Desktop\COMP268\Practice\RockPaperScissors\src>javac *.java
> RockPaperScissorsDriver.java:143: ')' expected
> else if (userChoice.compareTo("r") > 0 or userChoice.compareTo("p") > 0
> or userChoice.compareTo("s") > 0)
> ^
> RockPaperScissorsDriver.java:154: illegal start of expression
> }
> ^
> RockPaperScissorsDriver.java:157: ')' expected
> while (userChoice.compareTo("r") > 0 or userChoice.compareTo("p") > 0 or
> userCho
> ice.compareTo("s") > 0);
> ^
> 3 errors
>
> C:\Users\user\Desktop\COMP268\Practice\RockPaperScissors\src> graphic 827
>
> I am totally stumped on what to do. Can someone help me out with this
> problem? Thanks.
>
> Gilbert Neiva
>
> ----- Original Message -----
> From: "Dave" <davidct1209@xxxxxxxxx>
> To: <programmingblind@xxxxxxxxxxxxx>
> Sent: Wednesday, November 24, 2010 10:42 AM
> Subject: Re: Java problem
>
>
>> First issue is check the way you're comparing string; are you
>> comparing string object references or performing a case-sensitive
>> character match/case-insensitive match?  Read up on it if that didn't
>> make sense (either below or in any intro java book under any
>> discussion of strings).
>>
>> http://leepoint.net/notes-java/data/strings/12stringcomparison.html
>>
>> On 11/24/10, Gilbert Neiva <gneiva@xxxxxxx> wrote:
>>> I am recreating the game Rock Paper Scissors, but there is a problem. The
>>> game doesn't run properly. I get an infinate loop, and the game doesn't
>>> tell
>>> me my or it's choise. Here is what happens when I run it.
>>>
>>> Enter r for rock, p for paper, or s for scissors or any other key to
>>> quit:
>>>
>>> r
>>>
>>> Thanks for playing.
>>>
>>> We are tied!
>>>
>>> Enter r for rock, p for paper, or s for scissors or any other key to
>>> quit:
>>>
>>> s
>>>
>>> Thanks for playing.
>>>
>>> We are tied!
>>>
>>> Enter r for rock, p for paper, or s for scissors or any other key to
>>> quit:
>>>
>>> p
>>>
>>> Thanks for playing.
>>>
>>> We are tied!
>>>
>>> Enter r for rock, p for paper, or s for scissors or any other key to
>>> quit:
>>>
>>> P
>>>
>>> Thanks for playing.
>>>
>>> We are tied!
>>>
>>> Enter r for rock, p for paper, or s for scissors or any other key to
>>> quit:
>>>
>>> S
>>>
>>> Thanks for playing.
>>>
>>> We are tied!
>>>
>>> Enter r for rock, p for paper, or s for scissors or any other key to
>>> quit:
>>>
>>> q
>>>
>>> Thanks for playing.
>>>
>>> We are tied!
>>>
>>> Enter r for rock, p for paper, or s for scissors or any other key to
>>> quit:
>>>
>>>
>>>
>>> I have two class files, one with an enum class and the other is the
>>> driver
>>> class. Here is the code for the enum class.
>>>
>>>
>>>
>>> // Enumeration RockPaperScissors contains fields for the game rock,
>>>
>>> // paper, scissors.
>>>
>>> public enum RockPaperScissors { rock, paper, scissors }
>>>
>>>
>>>
>>> Here is the source code for the driver class.
>>>
>>>
>>>
>>> import java.util.Scanner;
>>>
>>> public class RockPaperScissorsDriver
>>>
>>> {
>>>
>>> public static void main(String[] args)
>>>
>>> {
>>>
>>> RockPaperScissors rockPaperScissors; // Holds enumeration value
>>>
>>> final String TITLE = "Rock, Paper, Scissors"; // Game chant
>>>
>>> final String PAPERCOVERS = "Paper covers rock:";
>>>
>>> final String SCISSORSCUTS = "Scissors cuts paper:";
>>>
>>> final String ROCKSMASH = "Rock smashes scissors:";
>>>
>>> final String IWIN = "I win!";
>>>
>>> final String YOUWIN = "You win!";
>>>
>>> String userChoice; // Holds user's choice
>>>
>>> int compChoice; // Holds computer'
>>>
>>> int wins = 0; // Holds user's number of wins
>>>
>>> int ties = 0; // Holds number of ties between user and computer
>>>
>>> Scanner inData = new Scanner(System.in); // Scanner object
>>>
>>> do
>>>
>>> {
>>>
>>> // Print statement asks user to enter choice
>>>
>>> System.out.println("Enter r for rock, p for paper, or s for scissors " +
>>>
>>> "or any other key to quit:");
>>>
>>> userChoice = inData.nextLine(); // Get userChoice
>>>
>>>
>>> // Computer makes choice
>>>
>>> compChoice = (int)(3.0 * Math.random()) + 1;
>>>
>>>
>>> // If user chooses R
>>>
>>> if (userChoice == "r")
>>>
>>> {
>>>
>>> userChoice = userChoice.toLowerCase(); // Switch userChoice to lowercase
>>>
>>> rockPaperScissors = RockPaperScissors.rock; // Change value of
>>> rockPaperScissors
>>>
>>>
>>> //Print statement tells user his or her choice
>>>
>>> System.out.println("You chose " + rockPaperScissors + ".");
>>>
>>> }
>>>
>>>
>>> // If user chooses p
>>>
>>> else if (userChoice == "p")
>>>
>>> {
>>>
>>> userChoice = userChoice.toLowerCase(); // Switch userChoice to lowercase
>>>
>>> rockPaperScissors = RockPaperScissors.paper; // Change value of
>>> rockPaperScissors
>>>
>>>
>>> // Print statement tells user his or her choice
>>>
>>> System.out.println("You chose " + rockPaperScissors + ".");
>>>
>>> }
>>>
>>>
>>> // If user chooses s
>>>
>>> else if (userChoice == "s")
>>>
>>> {
>>>
>>> userChoice = userChoice.toLowerCase(); // Switch userChoice to lowercase
>>>
>>> rockPaperScissors = RockPaperScissors.scissors; // Change value of
>>> rockPaperScissors
>>>
>>>
>>> // Print statement tells user his or her choice
>>>
>>> System.out.println("You chose " + rockPaperScissors + ".");
>>>
>>> }
>>>
>>> else // Otherwise
>>>
>>> {
>>>
>>> // Print statement ending game
>>>
>>> System.out.println("Thanks for playing.");
>>>
>>> compChoice = 0; // Reset compChoice to 0
>>>
>>> }
>>>
>>>
>>> // If computer chooses 1
>>>
>>> if (compChoice == 1)
>>>
>>> {
>>>
>>> rockPaperScissors = RockPaperScissors.rock; // Change value of
>>> rockPaperScissors
>>>
>>>
>>> // Print statement tells user computer's choice
>>>
>>> System.out.println("I chose " + rockPaperScissors + ".");
>>>
>>> }
>>>
>>>
>>> // If computer chooses 2
>>>
>>> else if (compChoice == 2)
>>>
>>> {
>>>
>>> rockPaperScissors = RockPaperScissors.paper; // Change value of
>>> rockPaperScissors
>>>
>>>
>>> // Print statement tells user computer's choice
>>>
>>> System.out.println("I chose " + rockPaperScissors + ".");
>>>
>>> }
>>>
>>>
>>> // If computer chooses 3
>>>
>>> else if (compChoice == 3)
>>>
>>> {
>>>
>>> rockPaperScissors = RockPaperScissors.scissors; // Change value of
>>> rockPaperScissors
>>>
>>>
>>> // Print statement tells user computer's choice
>>>
>>> System.out.println("I chose " + rockPaperScissors + ".");
>>>
>>> }
>>>
>>> // If user chooses r and computer chooses 2
>>>
>>> if ((userChoice == "r") && (compChoice == 2))
>>>
>>> {
>>>
>>> System.out.println(TITLE); // Print game chant
>>>
>>> System.out.println(PAPERCOVERS); // Print Paper covers rock
>>>
>>> // Print statement tells user computer wins
>>>
>>> System.out.println(IWIN);
>>>
>>> }
>>>
>>> // If user chooses p and computer chooses 3
>>>
>>> else if ((userChoice == "p") && (compChoice == 3))
>>>
>>> {
>>>
>>> System.out.println(TITLE); // Print game chant
>>>
>>> System.out.println(SCISSORSCUTS); // Print scissors cuts paper
>>>
>>> // Print statement tells user computer wins
>>>
>>> System.out.println(IWIN);
>>>
>>> }
>>>
>>> // If user chooses s and computer chooses 1
>>>
>>> else if ((userChoice == "s") && (compChoice == 1))
>>>
>>> {
>>>
>>> System.out.println(TITLE); // Print game chant
>>>
>>> System.out.println(ROCKSMASH); // Print rock smashes scissors
>>>
>>>
>>> // Print statement tells user computer wins
>>>
>>> System.out.println(IWIN);
>>>
>>> }
>>>
>>> // If computer chooses 1 and user chooses p
>>>
>>> else if ((compChoice == 1) && (userChoice == "p"))
>>>
>>> {
>>>
>>> System.out.println(TITLE); // Print game chant
>>>
>>> System.out.println(PAPERCOVERS); // Print paper covers rock
>>>
>>> // Print statement tells user he or she wins
>>>
>>> System.out.println(YOUWIN);
>>>
>>> wins++; // Increment wins by 1
>>>
>>> }
>>>
>>> // Ifcomputer chooses 2 and user chooses s
>>>
>>> else if ((compChoice == 2) && (userChoice == "s"))
>>>
>>> {
>>>
>>> System.out.println(TITLE); // Print game chant
>>>
>>> System.out.println(SCISSORSCUTS); // Print scissors cuts paper
>>>
>>> // Print statement tells user he or she wins
>>>
>>> System.out.println(YOUWIN);
>>>
>>> wins++; // Increment wins by 1
>>>
>>> }
>>>
>>> // If computer chooses 3 and user chooses r
>>>
>>> else if ((compChoice == 3) && (userChoice == "r"))
>>>
>>> {
>>>
>>> System.out.println(TITLE); // Print game chant
>>>
>>> System.out.println(ROCKSMASH); // Print rock smashes scissors
>>>
>>> // Print statement tells user he or she wins
>>>
>>> System.out.println(YOUWIN);
>>>
>>> wins++; // Increment wins by 1
>>>
>>> }
>>>
>>> else // Otherwise
>>>
>>> {
>>>
>>> // Print statement tells user is tied with computer
>>>
>>> System.out.println("We are tied!");
>>>
>>> ties++; // Increment ties by 1
>>>
>>> }
>>>
>>> }
>>>
>>> // Until user chooses r, p, or s
>>>
>>> while ((userChoice != "r") || (userChoice != "p") || (userChoice !=
>>> "s"));
>>>
>>>
>>> // Print statement tells user number of wins and number of ties
>>>
>>> System.out.println("You have " + wins + " wins and " + ties + " ties.");
>>>
>>> }
>>>
>>> } // End of class
>>>
>>>
>>>
>>> What am I doing wrong?
>>>
>>>
>>>
>>> Gilbert Neiva
>>>
>>>
>>>
>> __________
>> View the list's information and change your settings at
>> http://www.freelists.org/list/programmingblind
>>
>
> __________
> View the list's information and change your settings at
> http://www.freelists.org/list/programmingblind
>
>
__________
View the list's information and change your settings at 
http://www.freelists.org/list/programmingblind

Other related posts: