字符串只是不匹配? Java的

时间:2012-01-18 22:15:16

标签: java

  

可能重复:
  How do I compare strings in Java?

我试图让它成为当我输入希望时,b会保存希望,然后它会识别c == b,然后你就会得到图片。我该怎么办?我是Java的新手,如果这不是一件容易的事,我道歉。

package encryption;
import java.util.Scanner;

public class Encrypt


{


public static void main (String[] args)

{

Scanner scan = new Scanner(System.in);

String test1 = new String("Enter now: ");
String d = new String("Success!");
String e = new String("Failure");
String b = new String();
String c = "hope"


System.out.print("Enter text: ");
b = scan.next();

if (b == c)
System.out.println("\"" + d + "\"");
else
    System.out.println("\"" + e + "\"");

}}

7 个答案:

答案 0 :(得分:6)

使用if b.equals(c)因为b==c比较了java中的引用。它告诉我们两个对象是否都指向相同的内存位置。

因此,如果您需要检查它们的值是否相等,请始终使用equals方法。

答案 1 :(得分:2)

if (b == c)

使用equals来比较字符串:

if (b.equals(c))

==比较引用,而不是值,因此每次都会出现错误。等于比较值。

This链接在==,equals,compareTo,...

之间提供了一个很好的解释

答案 2 :(得分:1)

要测试Java中字符串的等效性,您需要使用equals方法:

if(c.equals(b)) {
    ...
}

==运算符测试两个变量是否指向内存中的相同位置。你有两个字符串具有相同的“值”(读取:文本),但存储在内存中的两个不同位置。

答案 3 :(得分:1)

c == b测试引用相等性 - 即引用指向同一个对象。您需要equals

中的b.equals(c)

答案 4 :(得分:0)

两件事:

  1. 请勿使用Stringsa == b进行比较,请使用a.equals(b)==运算符询问两个Strings是否是相同的物理内存块; equals()方法询问它们是否包含相同的字符。你想要第二个!
  2. 您永远不需要 - 也不应该 - 在Java中使用new String();只有像"hope"这样的双引号字符串才是String对象。使用new String()只会创建不需要的对象并使事情陷入困境。

答案 5 :(得分:0)

b==c检查bc是否引用相同的字符串,而b.equals(c)检查其是否相等,这就是你我正试图这样做。

答案 6 :(得分:0)

您的问题不是正确的阅读文档。 改为使用String.equals()。