JAVA - Rock Paper Scissors Lab 帮助! (IF/THENS)

JAVA - Rock Paper Scissors Lab help! (IF/THENS)

背景:编程初学者,对这整个 "Java" 非常陌生。

我喜欢帮助,但我不想要直接的答案,更像是一个正确的方向,或者任何我可以学习而不是盲目学习的方式 copy/paste。而不是 "heres the right code" 更多 "hears how you can get the right code" 谢谢:)

好的,所以我的问题是,提示广告 IF/THEN 语句有什么问题。当我 运行 它与提示时,它说找不到符号 - 方法提示(java.lang.String) 没有提示,当我运行它,我输入我的选择后,无论对错,它总是returns"Sorry, that is'nt a choice. Choose rock, paper or scissors!"即使它是对的!

如果您需要有关我的问题的更多信息,请告诉我:) 无论如何这里是 class:

//Player class 
import java.util.Scanner;
import java.lang.String;

public class Player
{
 private String name;
 private String choice;

 public Player(String nm)
 {
     name = nm;
 }  
 
 public Player(String nm, String ch)
 {
     name = nm;
     choice = ch;
 } 
  
 public void setName( String nm)
 {
     name = nm;
 } 
  
 public void setChoice( String ch )
 {  
 } 
  
 public String getChoice()
 {
  Scanner scan = new Scanner (System.in);
        System.out.println("Choose rock, paper or scissors:");
        String player = scan.next(); player.toLowerCase();

     if ((player != ("rock"))
        || (player != ("paper"))
        || (player != ("scissors")))
        {
            System.out.println("Sorry, that is'nt a choice. Choose rock, paper or scissors!");
            player = prompt("Choose rock, paper or scissors:");
        }
        else
        {
            System.out.println("Good choice!");
        }
     System.out.println("You chose " + player);
        return "";
     

 } 
  
 public String getName()
 {
        Scanner scan = new Scanner (System.in);
        System.out.println("Whats your name?");
        String name = scan.next(); 
     return "";
 }
 
 public String toString()
 {
  return "";
 }
}

还有运行纳尔:

public class PlayerRunner
{
 public static void main(String[] args)
 {
  Player s = new Player("Michael Jackson", "rock");

  
  System.out.println(s.getChoice());  
  System.out.println(s.getName()); 
  //outs rock
  //call the getName() method
  System.out.println(s);        //outs Michael Jackson rock
  
  //set the choice to paper
  System.out.println(s);        //outs Michael Jackson paper 
  
  //instantiate a new Player named jb named Jim Bob that chose scissors
  //print out Jim Bob 
 }
}
这部分的目标是:“使用 Player.java 文件创建播放器。完成播放器构造函数,设置 方法、get 方法和 toString。使用 PlayerRunner.java 测试您的播放器 class."

如果您发现我做错了什么,请告诉我 :) 我还是个初学者,但我来这里是为了学习,而不仅仅是粘贴正确答案然后继续。 谢谢!!

怎么样:

public String getChoice() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Choose rock, paper or scissors:");
        String player = scan.next();

        while ((!player.equalsIgnoreCase("rock"))
                && !player.equalsIgnoreCase("paper")
                && !player.equalsIgnoreCase("scissors")) {
            System.out.println("Sorry, that is'nt a choice. Choose rock, paper or scissors!");
            System.out.println("Choose rock, paper or scissors:");
            player = scan.next();
        }

        System.out.println("Good choice!");
        System.out.println("You chose " + player);
        return "";
    }

当您使用 == 运算符时,您是在比较两个对象是否相同,或者两个基本类型的值是否相同。

由于字符串实际上是Java中的一个对象,

String a = "string";
String b = "string";
System.out.println(a == b);

将 return 为假,但是

String a = "string";
String b = a;
System.out.println(a == b);

将 return 为真。 相反,如果你调用String class的equals方法,你可以比较两个值是否相同。

String a = "string";
String b = "string";
System.out.println(a.equals(b));

在您的情况下,player != ("rock") 将始终评估为 true,这看起来会导致一些问题。

您可以在这里阅读更多内容:Java String.equals versus ==