初学者Java字符串

时间:2012-12-27 06:14:36

标签: java string

  

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

所以,我对测试运算符和字符串有疑问。我正在尝试编写一个程序,用于输入“男孩”或“女孩”的用户输入。当用户输入“男孩”时,输出应为“你是个男孩”。当用户输入“女孩”时,输出应为“你是女孩”。

然而,当我编译并运行程序时,无论我输入什么,输出总是“你是女孩。”

这是因为字符串没有像整数那样的实际值,因此测试运算符不能用来比较它们吗?

另外,有没有类似java中的python的断言函数?

import java.util.Scanner;

class apples{
    public static void main(String args[]){
        System.out.println("Are you a boy or a girl?");
        Scanner lalala = new Scanner(System.in);
        String text = lalala.nextLine();

        if (text == "boy"){
            System.out.println("You are a boy.");
        }
        else{
            System.out.println("You are a girl.");
        }



    }
}

非常感谢〜

8 个答案:

答案 0 :(得分:6)

使用

text.equals("boy")

而不是

 if (text == "boy")

原因是,在Java中,==总是只比较两个引用(对于非基元,即),即它测试两个操作数是否引用同一个对象。

但是,可以覆盖equals方法 - 因此两个不同的对象仍然可以相等。

但更好的选择是使用 equalsIgnoreCase ,原因是用户可以输入boy或BOY或Boy或任何其他组合。 equalsIgnoreCase 方法只是忽略大小写并比较两个字符串。

text.equalsIgnoreCase("boy")

答案 1 :(得分:2)

使用text.equalsIgnoreCase("boy")

如果您考虑案例也会检查字符串的内容是否相同。

==用于检查对象是否相等。

如果不考虑案例,

text.equals(“boy”)就可以了。

答案 2 :(得分:2)

旁注。男孩以外的输入会让你打印女孩。如果条件另外多放一个。在进行比较之前,在更安全的一面修剪字符串以获得空白。

使用

 text.equals("boy")

 text.equalIgnoreCase("boy") 

如果它不区分大小写。

而不是

if (text == "boy")

你的结合将是这样的

 import java.util.Scanner;

class apples{
public static void main(String args[]){
    System.out.println("Are you a boy or a girl?");
    Scanner lalala = new Scanner(System.in);
    String text = lalala.nextLine();
    text = text.trim();
    if (text.equalIgnoreCase("Boy")){
        System.out.println("You are a boy.");
    }
    else if(text.equalIgnoreCase("Girl")){
        System.out.println("You are a girl.");
    } else {
        System.out.println("Invalid Gender");
    }
 }
}

答案 3 :(得分:1)

请使用equals方法获取字符串:if (text.equals("boy")){

==不适用于java

中的字符串内容相等性检查

答案 4 :(得分:1)

==测试对象标识是否相同。当您有两个包含相同值的字符串对象时,此对象标识将不相等。使用equals函数测试逻辑等效性。

答案 5 :(得分:1)

您的if else错了。此处仅使用if。否则,

如果我输入"some text",则输出将为"You are a girl"

喜欢这个

  if (text.equalsIgnoreCase("boy")) {
        System.out.println("You are a boy.");
    }
    else if (text.equalsIgnoreCase("girl")) {
        System.out.println("You are a girl.");
    } else {
        System.out.println("You are neither a boy nor a girl");
    }

答案 6 :(得分:0)

最好使用.equals方法而不是== boy

答案 7 :(得分:0)

关于断言的其他问题:       Java有一个断言函数。这是示例代码。

  assert(x <= 50):      "Not Accepted"; 

此代码检查整数x是否大于50.您将在控制台上看到输出。