0

对不起,如果标题没有意义。基本上,我是一个菜鸟,出于学习目的,我正在尝试创建一个基本程序,该程序首先询问性别,然后询问年龄以确定访问权限。该程序出于测试目的而存在性别歧视。无论如何,这就是我所拥有的:

    System.out.println("What is your Gender?");
    String gender = input.nextLine();
        if (gender.equals ("male")){
            System.out.println("What is your age?");
            int agem = input.nextInt();
            if (agem >= 21 && agem < 65){
                System.out.println("Access Granted");
            }else{
                System.out.println("Access Denied");
            }
        }
        if (gender.equals ("female")){
            System.out.println("What is your age?");
            int agef = input.nextInt();
            if (agef >=18 && agef < 60){
                System.out.println("Access Granted");
            }else{
                System.out.println("Access Denied");
            }
        }

现在我要做的是创建一个响应,以防用户输入“男性”或“女性”以外的内容。我尝试在两个 if 语句都是错误的情况下使用 else,但它没有奏效。

我还尝试创建另一个像这样的 if 语句:

if (!gender.equals ("male") || ("female"));

但这也行不通。

谢谢

4

5 回答 5

2

作为一个直接的解决方案,您需要在最后添加以下条件

if (!(gender.equals ("male") || gender.equals("female")));或者

if (!gender.equals ("male") && !gender.equals("female"));

但为避免不必要的条件检查,整个条件应如下所示:

        if (gender.equals ("male")){
            //
        }
        else if (gender.equals ("female")){
            //
        } else {

        }

从 java 7 开始,您还可以使用基于字符串的 switch 语句:

switch(value){
    case "male":
        //todo
        break;
    case "female"
        //todo
        break;
    default:
        //todo
}
于 2013-07-18T21:58:05.117 回答
1

这将起作用:

if (gender.equals ("male") || gender.equals("female"))
{ 
   //input is okay, do something
} 
else 
{ 
  //input is not "male" or "female"  
}
于 2013-07-18T21:57:03.220 回答
1

您也可以使用开关:

switch(gender) {
  case "male": 

    break;

  case "female":

    break;

  default: //everything else
}

编辑:字符串开关从 java 7 开始工作

于 2013-07-18T22:00:40.640 回答
0

您可能希望重组程序以使用if, else if, else.

例如:

System.out.println("What is your Gender?");
String gender = input.nextLine();
if (gender.equals ("male")){
    System.out.println("What is your age?");
    int agem = input.nextInt();
    if (agem >= 21 && agem < 65){
        System.out.println("Access Granted");
    }else{
        System.out.println("Access Denied");
    }
} else if (gender.equals ("female")){
    System.out.println("What is your age?");
    int agef = input.nextInt();
    if (agef >=18 && agef < 60){
        System.out.println("Access Granted");
    }else{
        System.out.println("Access Denied");
    }
} else {
    System.out.println("Unrecognized input.");
}

这更简洁一点,因为如果男性分支已经执行,它不可能执行女性分支,如果男性女性分支已经执行,它也不可能执行无法识别的分支。

于 2013-07-18T22:01:27.007 回答
0

最快的解决方案是使用:

if (gender.equals("Male")) {

} else if (gender.equals("Female")) {

} else {

}
于 2013-07-18T22:08:30.777 回答