Re: Java problem
- From: "Gilbert Neiva" <gneiva@xxxxxxx>
- To: <programmingblind@xxxxxxxxxxxxx>
- Date: Wed, 24 Nov 2010 17:53:37 -0700
I have updated the source code again. This time, the application works
perfectly except for one thing. When I type s for scissors, the application
ends. The application is suppose to end only if the user types in any key
other the r, p, or s. Here is the application as I ran it.
Enter r for rock, p for paper, or s for scissors or any other key to quit:
r
You chose rock.
I chose paper.
Rock, Paper, Scissors
Paper covers rock:
I win!
Enter r for rock, p for paper, or s for scissors or any other key to quit:
r
We are tied!
Enter r for rock, p for paper, or s for scissors or any other key to quit:
r
You chose rock.
I chose paper.
Rock, Paper, Scissors
Paper covers rock:
I win!
Enter r for rock, p for paper, or s for scissors or any other key to quit:
p
You chose paper.
I chose scissors.
Rock, Paper, Scissors
Scissors cuts paper:
I win!
Enter r for rock, p for paper, or s for scissors or any other key to quit:
p
We are tied!
Enter r for rock, p for paper, or s for scissors or any other key to quit:
p
We are tied!
Enter r for rock, p for paper, or s for scissors or any other key to quit:
p
You chose paper.
I chose scissors.
Rock, Paper, Scissors
Scissors cuts paper:
I win!
Enter r for rock, p for paper, or s for scissors or any other key to quit:
s
You chose scissors.
I chose rock.
Rock, Paper, Scissors
Rock smashes scissors:
I win!
Thanks for playing.
You have 0 wins and 3 ties.
Here is the source code.
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 userNumberChoice;
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))
{
userNumberChoice = 1; // Set to 1
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))
{
userNumberChoice = 2; // Set to 2
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))
{
userNumberChoice = 3; // Set to 3
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")))
{
compChoice = 1;
userNumberChoice = 2; // Set to 2
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")))
{
compChoice = 2;
userNumberChoice = 3; // Set to 3
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")))
{
compChoice = 3;
userNumberChoice = 1; // Set to 1
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.equals("r") && compChoice == 1) ||
(userChoice.equals("p") && compChoice == 2) ||
(userChoice.equals("s") && compChoice == 3))
{
// 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) || (userChoice.compareTo("p") < 0) ||
(userChoice.compareTo("s") < 0));
// Print statement ending game
System.out.println("Thanks for playing.");
// 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 compareTo() method still confuses me. I don't know whether to put
compareTo(argument) > 0 or compareTo(argument) < 0. I think I've gotten the
hang of the .equals() method. So why does the application end when I type s.
Gilbert Neiva
----- Original Message -----
From: "Dave" <davidct1209@xxxxxxxxx>
To: <programmingblind@xxxxxxxxxxxxx>
Sent: Wednesday, November 24, 2010 2:42 PM
Subject: 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
__________
View the list's information and change your settings at
http://www.freelists.org/list/programmingblind
Other related posts: