所以,我对测试运算符和字符串有疑问。我正在尝试编写一个程序,用于输入“男孩”或“女孩”的用户输入。当用户输入“男孩”时,输出应为“你是个男孩”。当用户输入“女孩”时,输出应为“你是女孩”。
然而,当我编译并运行程序时,无论我输入什么,输出总是“你是女孩。”
这是因为字符串没有像整数那样的实际值,因此测试运算符不能用来比较它们吗?
另外,有没有类似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.");
}
}
}
非常感谢〜
答案 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.您将在控制台上看到输出。