如何将 Jtextarea 与字符串进行比较

How To Turn A Jtextarea Comparable With String

我正在尝试制作一个聊天机器人,但在我输入时它总是出现错误:

if(Write == "hi"){
    Reply.setText("HI!");
}

它会出现错误:jtextarea incomparable with String

我该怎么办?

问题的背景不多,但我想你正在寻找

if ("hi".equals(Write.getText()))

顺便说一下,从不 将字符串与 == 进行比较,除非您确实希望它们与字符串 class 的实例完全相同。

解释

您不能使用 == 比较完全不同的对象。 WriteJTextArea 类型,"hi"String 类型。这些对象没有任何共同点,因此编译器抱怨。


解决方案

您可能想将 中存储的文本 JTextArea 与文本 "hi" 进行比较。您可以使用 JTextArea#getText 方法 (documentation) 访问此文本。

现在请注意,您永远(除非您知道自己在做什么)应该使用 == 来比较 String。结果将不是您所期望的。请改用 String#equals。以下是关于此主题的更多信息:How do I compare strings in Java?

因此您的代码可能如下所示:

if ("hi".equals(Write.getText())) {
    Reply.setText("HI!");
}

命名约定

最后请注意,您应该遵守 命名约定 。变量名和方法名都应始终以 小写字符 开头。大写仅用于 class 名称(和常量)。所以你应该写 writereply:

if ("hi".equals(write.getText())) {
    reply.setText("HI!");
}