Re: Java problem

  • From: Dave <davidct1209@xxxxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Wed, 24 Nov 2010 20:12:24 -0800

Yeah...trying to let him figure it out.  CompareTo for strings does a
lexical comparison...so "a" < "b" < ... "z".

In the condition as is, the loop continues if the character entered
(or any string for that matter) is < "s" (not including "s").

On 11/24/10, black ares <matematicianu2003@xxxxxxxxxxx> wrote:
> Even knowing what compareto is doing,
> it is not the case.
> because in this code, has I understand, the while must loop while the user
> press R, P or S.
> The compare method returns 3 values
> -1, 0, 1.
> And comparing to see if compare to is <0 is not the case here.
> I guess that in the while you wana see if the user choice is equal tor, or
> p, or s!
> Isn't it?
>
> ----- Original Message -----
> From: "Gilbert Neiva" <gneiva@xxxxxxx>
> To: <programmingblind@xxxxxxxxxxxxx>
> Sent: Wednesday, November 24, 2010 10:36 PM
> Subject: Re: Java problem
>
>
>> 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
>>> //www.freelists.org/list/programmingblind
>>>
>>
>> __________
>> View the list's information and change your settings at
>> //www.freelists.org/list/programmingblind
>>
>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
>
__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind

Other related posts: