JAVA if语句问题

JAVA if语句问题,java,Java,可能重复: 我使用java中的if语句通过询问此人是男孩还是女孩来确定此人是男性还是女性。这是一个相当愚蠢的声明,但我的疑问是,无论我输入什么,我总是得到“你是一个女性!”这是相当恼人的。你能帮忙吗?这是密码 import java.util.Scanner; class ifstatement { public static void main( String args[] ) { System.out.print( "please enter boy or gi

可能重复:

我使用java中的if语句通过询问此人是男孩还是女孩来确定此人是男性还是女性。这是一个相当愚蠢的声明,但我的疑问是,无论我输入什么,我总是得到“你是一个女性!”这是相当恼人的。你能帮忙吗?这是密码

import java.util.Scanner;

class ifstatement {

    public static void main( String args[] ) {
        System.out.print( "please enter boy or girl as an input:" );

        Scanner x = new Scanner( System.in );
        String a = x.nextLine();

        if ( a == "boy" ) {
            System.out.print( "You are a male" );
        }
        else {
            System.out.print( "You are a female!" );
        }
     }
 }    
使用
equals()
方法比较
String

equals()
比较对象

=
比较参考值

使用

这将比较字符串的
“boy”
实例与
a


使用
equals()
方法比较
字符串

equals()
比较对象

=
比较参考值

使用

这将比较字符串的
“boy”
实例与
a



==
比较使用对象引用,无论两个对象是否指向相同的内存位置
.equals()
在对象类中执行相同的操作,但是字符串类会覆盖它以进行值比较。

==
比较使用对象引用,无论两个对象是否指向相同的内存位置
.equals()
在对象类中执行相同的操作,但是字符串类会覆盖它以进行值比较。

操作符检查对对象的引用是否相等。在测试字符串相等性时,这是不够的。在
String.equals()方法
中进行引用相等性测试,以及其他检查:

 public boolean equals(Object anObject) {
        if (this == anObject) {      // Reference equality
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {  // Are the strings the same size?
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])        // Compare each character
                        return false;
                }
                return true;
            }
        }
        return false;
  }

=
操作符检查对对象的引用是否相等。在测试字符串相等性时,这是不够的。在
String.equals()方法
中进行引用相等性测试,以及其他检查:

 public boolean equals(Object anObject) {
        if (this == anObject) {      // Reference equality
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {  // Are the strings the same size?
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])        // Compare each character
                        return false;
                }
                return true;
            }
        }
        return false;
  }
如果你说:

 if ("boy".equals(a)){
 System.out.print("You are a male");
 } else if ("girl".equals(a)){
 System.out.print("you are a female!");
 { else {
 System.out.print("invalid response!");
 }
这会解决你的问题。处理字符串时,应始终使用.equals()比较精确值。“==”操作符通常比较两个对象是否指向内存中的同一位置。因为字符串是一个对象,所以它们不一样。

如果你说:

 if ("boy".equals(a)){
 System.out.print("You are a male");
 } else if ("girl".equals(a)){
 System.out.print("you are a female!");
 { else {
 System.out.print("invalid response!");
 }

这会解决你的问题。处理字符串时,应始终使用.equals()比较精确值。“==”操作符通常比较两个对象是否指向内存中的同一位置。因为字符串是一个对象,所以它们是不同的。

1。中的java对象使用.equals()方法进行比较,而字符串是java中的对象。


2.使用
a.equals(“boys”)
,这将为您提供正确答案。

1.中,使用.equals()方法比较java对象,字符串是java中的对象。


2.使用
a.equals(“男孩”)
,如果你不关心这个案例,这将给你正确答案。

和equalsIgnoreCase()。我不明白。请你写那行代码好吗?如果你不关心这个案子,请写equalsIgnoreCase()。我不懂。请你写那行代码好吗?当你做
a==“boy”
时,你是在测试a是否与字符串
“boy”
完全相同的实例,而不是字符串是否包含相同的字符。当你做
a==“boy”
时,你是在测试a是否与字符串
“boy”
完全相同的实例,不管字符串是否包含相同的字符。非常感谢!你的回答是最有用的。非常感谢!你的回答很有帮助