Java中if嵌套问题,代码如下:

import java.util.Scanner;
public class if3{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入你的性别");
String sex=in.next();
if(sex=="男"){
System.out.println("请输入你的年龄");
int age=in.nextInt();
if(age>=18){
System.out.println("成年人");
}else{
System.out.println("小屁孩");
}
}else{
System.out.println("原来是个女的");
}
}
}

在我输入“男”的时候,为什么不执行if语句“请输入你的年龄” ? 求解:
javac编译通过。

String 是引用类型,比较两个引用类型的值应该使用equals比较
如下:

if (sex.equals("男")) {
System.out.println("请输入你的年龄");
int age = in.nextInt();
if (age >= 18) {
System.out.println("成年人");
} else {
System.out.println("小屁孩");
}
} else {
System.out.println("原来是个女的");
}

如果依然执行不了,请将编译后的if3.calss文件删除cmd关闭,然后打开cmd再重新编译并执行
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-29
String类型比较字符串用equals(),你得把 if(sex=="男"){ 换成 if(sex.equals("男")){ 就好了追问

还不好使。

追答

没有问题啊

本回答被提问者采纳
第2个回答  2015-01-29
因为sex是String类型的,要用equals来比较,应该改成:sex.equals("男")
第3个回答  2015-01-29
用sex.equals(“男”),在java中判断字符串的时候都用equals,至于什么==无法实现,涉及到一个值传递和地址传递的问题.你先用equals试试吧....
第4个回答  2015-01-29
请把判断条件改成
sex.equals("男")