我是一个极端的编码菜鸟,我刚开始。我设计了一个石头剪刀游戏,无法弄清楚它为什么不起作用。由于某种原因,用户输入在if语句中不起作用。请看一下。
package com.youtube.njillatactics;
import javax.swing.JOptionPane;
public class RPS {
public static void main(String args[]){
//start message
JOptionPane.showMessageDialog(null, "Welcome to Nick's rock paper scissors game!");
//get user input and convert to lower case
String userInput = JOptionPane.showInputDialog("Choose rock, paper, or scissors.").toLowerCase();
//generate random computer input
double computerInput = Math.random();
//match user input to converted computer input
JOptionPane.showMessageDialog(null, match(userInput, convert(computerInput)));
}
//convert random computer input into choice
public static String convert(double x){
if(x < 0.33){
return "rock";
}else if(x < 0.66){
return "paper";
}else
return "scissors";
}
//check to see who wins
public static String match(String x,String y){
if(x == y){
return "Tie!";
}else
if(x == "rock"){
if(y == "paper"){
return "Computer wins!";
}else
return "User wins!";
}
if(x == "paper"){
if(y == "scissors"){
return "Computer wins!";
}else
return "User wins!";
}
if(x == "scissors"){
if(y == "rock"){
return "Computer wins!";
}else
return "User wins!";
}else
return x + ", " + y;
}
}
答案 0 :(得分:5)
当您将字符串与==
.equals(s)
进行比较
而不是,例如,
if(y == "rock") {
将其更改为
if(y.equals("rock"))
(您还应确保y
不是null
,无论是通过测试还是尝试捕获它。)
如果相同的字符串对象位于==
的两侧,则将==
的字符串计算结果为true。
比较字符串与equals(s)
比较它们的值,无论它们是否是同一个对象......显然,如果它们发生是同一个对象,它将始终评估为true
。
答案 1 :(得分:1)
在java中,您不会按x == y
比较两个字符串。相反,您可以使用x.equals(y)
进行比较。这解释了为什么那些if语句不起作用。