2

可能重复:
Java String.equals 与 ==

我一直在使用 nextLine() 获取字符串,然后将其用作测试条件(在 if 语句或 while 循环中)遇到困难。查看 println(),似乎 String 已正确分配给变量“repeat”,但由于某种原因测试条件失败。我的头撞在墙上,额头流血。请帮忙。

import java.util.Scanner;

public class potpie {

    public static void main(String args[]){

        Scanner input = new Scanner(System.in);
        String repeat = "yes";


        System.out.println("Type in yes");
        repeat = input.nextLine();
        System.out.println("If repeat is now yes, print yes:  " +repeat);

        if(repeat == "yes"){
            System.out.println("It worked");
        } else
            System.out.println("it failed");
    }
}
4

3 回答 3

2

你应该使用等于。==为您提供参考平等并equals为您提供价值平等。

if("yes".equals(repeat)){ 

代替

if(repeat == "yes"){

我建议您获取 eclipse/net bean 并开始调试,否则一个简单的搜索就会得到答案

Java Debugging with Eclipse - Tutorial

于 2012-10-31T20:39:36.410 回答
1

有时 == 应该用于对象,但它实际上比较的是 a 和 b 是否字面上是同一个对象(在内存中具有相同的地址)。正如其他人所说,您正在比较这种情况下的内容,因此您使用 .equals()

于 2012-10-31T20:45:38.210 回答
1
if(repeat == "yes"){

应该

if(repeat.equals("yes"){

(或者)

 if("yes".equals(repeat){

每天我们都会多次看到这个问题,简单的搜索就可以为您提供足够的信息。

==equals 用于原始比较(引用相等)。equals()用于字符串(或)对象比较(对象内容相等)。

于 2012-10-31T20:39:13.247 回答