-3

我只是在学习 Java,所以这可能是一个非常愚蠢的问题,但我找不到足够简单的答案。我正在尝试制作程序,因此如果用户键入“男性”来运行 System.out.print("You are a guy");
这是我的代码:

    import java.util.Scanner;

public class clac {
    public static void main(String[] args){
        double gender;
        Scanner input = new Scanner(System.in);
        System.out.print("Are you male or female? ");
        gender = input.nextDouble();
        if (gender == "male"){
            System.out.println("You are a guy");
        }else{
            System.out.print("You are a gal.");
        }
    }
}
4

5 回答 5

5

你做错了什么:你需要阅读一个字符串。字符串是一段文本。双精度数是十进制数。您正在阅读双份。

如何解决:

String gender = input.next(); // read a String, instead of double
if (gender.equals("male")) // if (gender == "male") use .equals for strings
{
    System.out.println("U mad bro!?");
} else
{
    System.out.println("Hey Doll!");
}
于 2013-01-18T21:45:11.603 回答
0

您不应该使用nextDouble(),它指的是小数。

于 2013-01-18T21:45:03.567 回答
0

尝试

  String gender = input.nextString();
    if ("male".equals(gender)){
        System.out.println("Wazzup dude?");
    }else{
        System.out.print("Hey Doll!");
    }
于 2013-01-18T21:46:33.450 回答
0

我相信您想对扫描仪使用.next()方法。尝试这样的事情:

导入 java.util.Scanner;

公共类 clac {
    公共静态无效主要(字符串[]参数){
        //将性别变量定义为字符串,因为这是我们期望的输入
        字符串性别;
        //实例化一个Scanner对象
        扫描仪输入 = 新扫描仪(System.in);
        //向用户提问
        System.out.print("你是男是女?");
        //将响应读入性别变量
        性别 = input.next();
        //检查用户的回答是否匹配“男”
        //我们把“男”放在第一位,以防用户返回空值
        //这将有助于避免致命错误
        如果(“男性”.equals(性别)){
            System.out.println("你是个男人");
        }
        别的 {
            System.out.print("你是个女孩。");
        }
    }
}

我希望这有帮助。

于 2013-01-18T21:55:55.460 回答
0

你应该使用equals方法比较两个字符串,字符串是一个对象,这是一个引用,equals()方法会比较两个字符串的内容,但是==会比较两个字符串的地址

所以,你应该这样写:

gender = input.next();
if (gender.equals("male")){
    System.out.println("You are a guy");
}else{
    System.out.print("You are a gal.");
}
于 2013-07-24T07:24:12.620 回答