Java 逻辑错误;终端正在显示两种可能的答案

Java 逻辑错误;终端正在显示两种可能的答案,java,logic,Java,Logic,我不熟悉编程和逻辑错误;我曾寻找过类似的问题,但没有一个与我的问题完全匹配。我们有一个任务是制作一个程序,用户输入他们的名字和姓氏——如果名字相同,它返回“你的名字和姓氏相同”,如果名字不同,它返回“你的名字和姓氏不同” 我的问题是,无论输入什么名字,它都会不断返回两个答案。如果你运行它并在其中尝试你自己的名字,你就会明白我的意思 这是我的代码(我们必须使用扫描仪): 更新 我试着用下面的建议纠正它,下面是它现在的样子: import java.util.Scanner; 公共类名称分配 {

我不熟悉编程和逻辑错误;我曾寻找过类似的问题,但没有一个与我的问题完全匹配。我们有一个任务是制作一个程序,用户输入他们的名字和姓氏——如果名字相同,它返回“你的名字和姓氏相同”,如果名字不同,它返回“你的名字和姓氏不同”

我的问题是,无论输入什么名字,它都会不断返回两个答案。如果你运行它并在其中尝试你自己的名字,你就会明白我的意思

这是我的代码(我们必须使用扫描仪):

更新

我试着用下面的建议纠正它,下面是它现在的样子:

import java.util.Scanner;
公共类名称分配
{
公共静态void main(字符串[]args)
{
扫描仪标准输入=新扫描仪(System.in);
字符串名;
System.out.print(“输入您的名字:”);
firstName=stdIn.nextLine();
字符串lastName;
System.out.print(“输入您的姓氏:”);
lastName=stdIn.nextLine();
if(firstName.equals(lastName))
System.out.println(“Hello”+firstName+“+lastName+”,“+”+“您的名字和姓氏相同。”);
else(!firstName.equals(lastName)
System.out.println(“Hello”+firstName+“+lastName+”,“+”+“您的名字和姓氏不同。”);
}//末端总管

}//结束类名称分配
要在java中比较2个
字符串
,必须使用
if(firstName.equals(lastName))
,因为在
java中
==
运算符检查2个
字符串
对象和
.equals()
检查
字符串


此外,您必须删除
if
语句后的分号
,否则将无法执行
if
条件。

您的
else
子句错误。只需将
else
子句替换为以下
else
子句即可:

else
    System.out.println("Hello " + firstName + " " + lastName + "," + " " + "your first name and last name are different.");
就是这样。
else
不需要条件。这就是为什么
else(!firstName.equals(lastName))
是错误的。

您缺少了我添加和删除的“,”+”,因为它效率不高,应该包含在我修复的同一字符串中。只要用它替换你的代码,它就会工作

    if (firstName.equals(lastName)){ 
                 System.out.println("Hello " + firstName + " " + lastName + ", your first name and last name are the same.");
            }
else (!firstName.equals(lastName)){
                System.out.println("Hello " + firstName + " " + lastName + ", your first name and last name are different.");
    }

看看那些“如果”的陈述。后面的分号是做什么的?这里没有看到任何JavaScript。我希望您使用的是一个像样的IDE,它应该会告诉您语法错误在哪里。如果要使用带条件的else分支,请使用
else If
而不是
else
。此外,您还缺少一个结束语
。这就是为什么最好在if-else或循环体周围使用
{
}
,即使它们只有一行,也会得到更好的错误消息。这可能是个问题,但不是问题所在。;-)将您的答案保存到OP的下一个问题中:-我很忙,所以我刚刚编辑了它。尾随的semi不是语法错误。如果你要给出答案,告诉OP为什么这是个问题。这实际上是个问题!谢谢你的帮助!我不得不移动一些分号使它工作,但它最终工作正常。
    if (firstName.equals(lastName)){ 
                 System.out.println("Hello " + firstName + " " + lastName + ", your first name and last name are the same.");
            }
else (!firstName.equals(lastName)){
                System.out.println("Hello " + firstName + " " + lastName + ", your first name and last name are different.");
    }