0

我正在制作一个简单的媒人作为 JAVA 的学习项目。到目前为止,我的程序只问了几个问题,但我想做针对特定性别的问题,所以我询问了他们的性别(m 或 f),然后尝试添加一条仅显示性别是否为 m 的消息。对话框应该说“干得好,你是男性!”。否则它会重新启动方法。每次,无论我输入什么,它都会重新启动程序。

这是我的代码:

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args){
        setVars();
    }

    public static void setVars(){
        String name = JOptionPane.showInputDialog(null, "What is your name?");
        String sAge = JOptionPane.showInputDialog(null, "What is your age?");
        String sex = JOptionPane.showInputDialog(null, "What is your sex?\n(Enter  m or f)");

        if (sex == "m"){
            JOptionPane.showMessageDialog(null, "Well done, you are male.\nKeep Going!");
        }
        int age = Integer.parseInt(sAge);
        String chars = JOptionPane.showInputDialog(null, "Name three charectaristics");
    }
}
4

4 回答 4

1

尝试

if ( "m".equalIgnoreCase(sex))

您应该使用 equals 比较字符串值和 == 检查它们的引用

于 2013-10-19T15:44:13.933 回答
1

您的代码应该是:

if ("m".equals(sex)) {
  //
}

== 比较对象的地址/引用
.equals 比较对象的值

于 2013-10-19T15:44:52.060 回答
1

在 Java 中,您不需要将字符串与 比较==,您必须将它们与 on 的equals()方法进行比较String。String 有此方法的两种变体:equals()区分大小写和equalsIgnoreCase()不区分大小写的 。在下面的示例中,您可以使用其中任何一种。

尝试这个:

if(sex.equalsIgnoreCase("m") {
    ...
}

或者防止空值...

if("m".equalsIgnoreCase(sex)) {
    ...
}
于 2013-10-19T15:44:57.670 回答
0

因为String是一个对象而不是一个数据类型,就像int比较两个字符串时它是通过.equals()方法完成的:

package example;

import javax.swing.JOptionPane;
public class Main {
    public static void main(String[] args){
        setVars();
    }
    public static void setVars(){
        String name = JOptionPane.showInputDialog(null, "What is your name?");
        String sAge = JOptionPane.showInputDialog(null, "What is your age?");
        String sex = JOptionPane.showInputDialog(null, "What is your sex?\n(Enter  m or f)");
        if (sex.equals("m")){
            JOptionPane.showMessageDialog(null, "Well done, you are male.\nKeep Going!");
        }
        int age = Integer.parseInt(sAge);
        String chars = JOptionPane.showInputDialog(null, "Name three charectaristics");
    }
}
于 2013-10-19T15:54:05.670 回答