【问题标题】:Java if statement strings and more [closed]Java if 语句字符串等 [关闭]
【发布时间】:2012-11-01 19:26:15
【问题描述】:

我决定今晚尝试学习一点java,我只是在尝试一些我学到的东西。

我的问题是在 if 语句中,我如何使两个刺痛为真。这是我目前所拥有的。

if ("male".equals(gender)) && ("brendan".equals(name))

我很确定问题是 && 但我不确定。

编辑编辑编辑。

这解决了部分问题。
if("male".equals(gender) && "Brendan".equals(name))
这也是如此

if (("male".equals(gender)) && ("brendan".equals(name)))

现在我将发布我现在遇到另一个问题的全部内容,您可能需要查看全部内容。

import java.util.Scanner;

public class my_input_and_if_statements 
{
    public static void main (String args[])
{
    Scanner jonks = new Scanner(System.in);
    String name, gender, answer;
    System.out.println("What is your name?");
    name = jonks.next();
    System.out.print("Hello ");
    System.out.print( name);
    System.out.println(" are you male or female?");
    gender = jonks.next();

        if (("male".equals(gender)) && ("brendan".equals(name)))            
            {
            System.out.println("blah blah");
            }

        else
            {
            System.out.println(" Welcome to one of my first java applications. I hope you like it");
            }

        if (("female".equals(gender)) && ("nicole".equals(name))) 
            {
            System.out.println("blah blah 2");
            }
        else
            {
            System.out.println(" Welcome to one of my first java applications. I hope you like it");
            }

            }
}

抱歉,如果在我开始尝试学习更多内容之前尝试将一些东西联系在一起,这似乎毫无意义。

现在,当我完成它时,它会给我两条线,或者它给我两条线。

【问题讨论】:

  • 我没有真正看到这里的问题。
  • 它按预期工作。找出方法是运行它。
  • 请发布可编译代码。
  • 我认为“错误”已经被编辑了。
  • my amended answer below 现在回答你问题的第二部分了吗?

标签: java eclipse if-statement


【解决方案1】:

我认为问题在于你的括号。

if 语句的形式为if(condition),其中condition 是一些布尔表达式。在这种情况下,您希望条件为"male".equals(gender) && "Brendan".equals(name),因此您的完整语句应如下所示:

if("male".equals(gender) && "Brendan".equals(name)) {
    //Foo Blah blah
}
else {
    //Barr fuzz fuzz
}

对于问题的第二部分,您有两个 if 语句,它们都打印在 ifelse 分支上,因此您将点击 @987654328 中的一个或其他第一个if 中的@ 语句第二个ifprintln 语句中的一个或另一个。我认为您可能想要做的事情如下:

if(gender.equals("male") && name.equals("Brendan")) {
    println("Brendan's Message");
}
else if(gender.equals("female") && name.equals("Nicole")) {
    println("Nicole's Message");
}
else {
    println("Anybody's Message");
}

【讨论】:

  • 两者并不完全相同。一个可以抛出 NPE,另一个我认为不会。
  • 好点。让我编辑它以专注于我认为的实际问题。
【解决方案2】:

缺少一个( 和多余的括号。

if ("male".equals(gender) && "brendan".equals(name))

【讨论】:

【解决方案3】:
if (("male".equals(gender)) && ("brendan".equals(name)))
   ^                                                   ^

if(condition) 需要括号。

对于您的多重比较,您可以有男性或女性,而不是两者,因此您可以使用嵌套的 if..else 构造来代替,

否则,您将不必要地执行每个名字的男性/女性评估。以下对我来说似乎更自然


if ("male".equals(gender)){
    if("brendan".equals(name)){
        System.out.println("right");   
    }else{
        System.out.println("wrong wrong");  
    }
    //add more cases here
}else{
    //definitely female

}

【讨论】:

  • 从来没有想过这样做,但当你想到它时肯定是有道理的。但它提出了另一个问题。
  • 就像你上面所说的那样。你怎么做第二个?所以它有
     if ("male".equals(gender)){ if("brendan".equals(name)) { System.out } else { System.out } //这部分?否则 
  • 格式不正确。给我一点时间。
  • @user1820578 在这种情况下,您的基于&& 的解决方案可能会更好。但是如果以后要添加更多的条件,那就更难了。我会在 System.out.println(" wrong wrong " + gender); 之类的 else 中实现它,以便区分两个失败的案例。
  • @user1820578 我已经更新了我的答案。在您的代码中,您正在测试女性,即使在确定是否为男性之后,在上述循环中,这是 IMO 不必要的。
【解决方案4】:

我认为他想了解枚举。喜欢

 public enum Gender
 {
      MALE = "Male";
      FEMALE = "Female";
 }

或者这个Best way to create enum of strings?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 2015-12-18
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多