任何人都可以解释一下,为什么输出会打印两个不同的布尔值。在这种情况下,为什么没有比较的字符串不相等。只需将两个字符串与' =='进行比较运算符确实比较字符串。例如, System.out.print(" paper" ==" paper")打印为true。提前致谢。 :)
package my_pack;
import java.util.Objects;
import java.util.Random;
import java.util.Scanner;
public class game {
public static void main(String[] args) {
//get the user input get_input()
Scanner scn = new Scanner(System.in);
System.out.println("Rock Paper or Scissor? Enter Your choice: ");
String user_choice = scn.nextLine();
user_choice = user_choice.toLowerCase();
//get the random number
Random rand = new Random();
int random_num = rand.nextInt(3) + 1;
//assign the number to specified method
String comp_choice ="";
switch (random_num){
case 1:
comp_choice = "rock";
break;
case 2:
comp_choice = "paper";
break;
case 3:
comp_choice = "scissor";
break;
}
System.out.println(comp_choice);
System.out.println(user_choice == comp_choice); //paper == paper (false)
System.out.println(Objects.equals(user_choice, comp_choice)); //paper == paper (true)
}
}
答案 0 :(得分:1)
如果你来自c ++,那么通过引用(==)和按值(等于)进行比较会更容易。
使用==比较两个字符串时,您要比较两个对象及其引用,而不是它们的值。当您比较两个字符串文字,例如“paper”==“paper”时,它们指向同一块内存,因此该行返回true。
而不是==,使用yourString.equals(stringToCompare)或.equalsIgnoreCase来忽略大小写的差异。
System.out.println("RANDOM CHOICE: " + comp_choice); //display user and comp choice
System.out.println("USER CHOICE: " + user_choice);
System.out.println("USER = COMP? " + user_choice.equalsIgnoreCase(comp_choice)); //compare both choices