0

在这里完成 Java 新手。学校刚开学,我正在学习 APCS。我们的老师向我们展示了这个名为 Scanner 的很酷的课程,但他还没有教我们。我觉得它很酷,所以我决定更多地研究它。在我做了一些研究之后,我发现它基本上允许您将输入到系统中的信息用于您的代码。我试图用这段代码制作我自己的小程序。这个想法很简单。

  1. 要求用户输入他的名字。

  2. 在收到用户的名字后,请他验证这是他的名字(没有拼写错误,错误的名字等)。

  3. 使用 if/else 语句,如果是:打印谢谢。如果不是:打印一个随机字符串取笑他。

此时我打算使用 if/else 语句。这是我们作为一个班级尚未涵盖的内容。在输入我的 if else 语句后,我得到了一个编译时错误。这是 BlueJ 给我的:

不兼容的类型

这是代码:

public class useInfo
{
public static void main(String[] args)
{
    String firstName;
    String verifyFirstName;
    Scanner keyboardInput = new Scanner(System.in);
    Scanner verification = new Scanner(System.in);
    System.out.print("Please Enter your first name here --->");
    firstName = keyboardInput.nextLine();
    System.out.println("Thank you! Your first name is " + firstName + " , correct?");
    keyboardInput.close();
    verifyFirstName = verification.nextLine();
    if (verifyFirstName = "Yes") //this is the section I get the error on. RIGHT HERE.
    {
        System.out.println("Great! Thanks for you time.");
    }
    else
    {
        System.out.println("You need to get your stuff together. How can you not even type your own name correctly?");
    }
}
}
4

2 回答 2

1

这是一个赋值运算符。

verifyFirstName = "Yes"

它不是检查是否verifyFirstName等于“是”,而是将其设置为“是”。

您会收到错误“不兼容的类型”,因为该if语句需要评估为布尔值truefalse. 您放在括号中的赋值计算为字符串。您需要将您的 String 值与该equals方法进行比较。

if (verifyFirstName.equals("Yes")) {
    ...
}
于 2013-09-11T00:20:48.413 回答
0

就像比尔说的,这是一个布尔值,而你把赋值运算符。

但是,大多数犯此错误的人通常=在他们的意思时使用==

这是一种特殊情况,因为字符串是一个对象,所以您可以使用.equals. 如果您使用原语(数字),您将使用==

例如:

if(2 + 3 == 5) {
 System.out.println("Great! Thanks for your time.");
}
于 2015-03-29T01:23:24.153 回答