java - 在循环内生成数字
问题描述
我必须创建一个虚拟石头剪刀布游戏的程序。我已经弄清楚了其中的大部分,但是每次用户进入他们的游戏时,我都无法从 1-3 中获取一个随机数。我将在下面展示这两个类,首先是用户类,然后是计算机类。任何帮助将不胜感激,谢谢。
用户:
public String play()
{
do{
switch (userChoice) {
case R:
{
System.out.println("You have chosen rock.");
if (robot.getComputerChoice().equals(paper)){
System.out.println("You lose! \nPaper covers rock!");
numOfLosses ++;
}
else if (robot.getComputerChoice().equals(scissors)){
System.out.println("You win! \nRock smashes scissors!");
numOfWins ++;
}
else if (robot.getComputerChoice().equals(rock)){
System.out.println("Its a tie!");
numOfTies ++;
}
userChoice = result;
}
break;
case P:
{
System.out.println("You have chosen paper.");
if (robot.getComputerChoice().equals(rock)){
System.out.println("You win! \nPaper covers rock!");
numOfWins ++;
}
else if (robot.getComputerChoice().equals(scissors)){
System.out.println("You lose! \nScissors cuts paper!");
numOfLosses ++;
}
else if (robot.getComputerChoice().equals(paper)){
System.out.println("Its a tie!");
numOfTies ++;
}
userChoice = result;
}
break;
case S:
{
System.out.println("You have chosen scissors.");
if (robot.getComputerChoice().equals(rock)){
System.out.println("You lose! \nRock smashes scissors!");
numOfLosses ++;
}
else if (robot.getComputerChoice().equals(paper)){
System.out.println("You win! \nScissors cuts paper!");
numOfWins ++;
}
else if (robot.getComputerChoice().equals(scissors)){
System.out.println("Its a tie!");
numOfTies ++;
}
userChoice = result;
}
break;
default:
System.out.println("That input was invalid.");
break;
}
Scanner scan = new Scanner(System.in);
System.out.println("Lets play Rock, Paper, Sciccors!");
System.out.println("(R)ock, (P)aper, or (S)cissors? 0 to end the game.");
userChoice = scan.next();
userChoice = userChoice.toUpperCase();
} while (!userChoice.equals(EXIT));
System.out.println("Thanks for playing!");
System.out.println("Number of wins: " + numOfWins + "\nNumber of losses: "
+ numOfLosses + "\nNumber of ties: " + numOfTies);
total = numOfWins + numOfLosses + numOfTies;
winPercentage = (numOfWins/total) * 100;
System.out.printf(userName + "'s win percentage: %.2f", winPercentage);
System.out.print("%");
return result;
计算机:
public Computer() {
Random rand = new Random();
Scanner scan = new Scanner(System.in);
COMPUTERNAME = "Bob";
while (){ // can't figure out what to do here.
generateNumber = rand.nextInt(3)+1; // 1 to 3
switch (generateNumber) {
case 1:
computerChoice = "rock";
break;
case 2:
computerChoice = "paper";
break;
case 3:
computerChoice = "scissors";
break;
default:
break;
}
}
}
public String getComputerChoice()
{
return computerChoice;
}
public String getComputerName()
{
System.out.print("My name is ");
System.out.print(COMPUTERNAME);
System.out.println(", your computer opponent.");
return COMPUTERNAME;
}
解决方案
推荐阅读
- c# - 当用户空闲或不活动时如何在 Windows 应用程序中设置计时器
- nestjs - nestjs ValidatorConstraint 按顺序,将自定义验证器反映到 swagger 定义
- python - 无法在 ubantu 中安装“pip3”
- angular - 将子组件的输入与祖父同步。许多不利因素
- python - Python 脚本不通过 crontab 执行
- r - 如何在没有上午或下午信息的情况下将 12 小时制转换为 24 小时制?
- c# - Lambda 表达式令人困惑
- windows - 在 Godaddy Windows Hosting 中使用 CERTBOT 生成证书文件上传到 plesk
- c# - WPF - 使用 StringFormat 绑定小数
- postgresql - postgresql中主键的下一个值