public class sex {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入性别:");
String sex=scanner.next();
if(sex!="男"||sex!="女"){
System.out.println("非男非女!");
}else{
System.out.println(sex);
}
}}
//不管我输入什么还是输出“非男非女”,没有进入if语句
//求解释啊 

解决方案 »

  1.   

    String对象没有=这个方法 ,当然不会进入if里。用sex.equals()这个办法
      

  2.   


    正解,想要比较字符串不能用等号,且||、&&、!三个关系弄错了
    if应该修改为if(!("男".equals(sex) || "女".equals(sex)))
    非(男或女) == 人妖 或者
    if(!"男".equals(sex) && !"女".equals(sex)) 
    非男且非女 == 人妖
      

  3.   

    跟逻辑没什么关系,你输入的是字符串啊,字符串比较要用equals()
      

  4.   

    对字符串而言, str1.equals(str2)是比内容,若用str1==str2,则是比地址。
      

  5.   

    if ((!"男".equals(sex)) && !("女".equals(sex))) {
    System.out.println("非男非女!");
    } else {
    System.out.println(sex);
    }
      

  6.   

    string 内容比较是equals,==是比较的对象的地址。
      

  7.   

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入性别:");
        String sex = scanner.next();
        if (!"男".equals(sex) && !"女".equals(sex)) {
    System.out.println("非男非女!");
        } else {
    System.out.println(sex);
        }
    }
      

  8.   

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入性别:");
        String sex = scanner.next();
        if (!"男".equals(sex) && !"女".equals(sex)) {
    System.out.println("非男非女!");
        } else {
    System.out.println(sex);
        }
    }
      

  9.   

    张孝祥老师说的对,偶尔自己用==却不用equals()
      

  10.   

    if(sex!="男"||sex!="女"){
    System.out.println("非男非女!");
    }
    你不管输入什么东西。它都得进入到这个if中。
      

  11.   

    改成:if(!sex.equals("男")&&!sex.equals("女")),“==”比较的是两个对象的引用是否相同,当然不是一个了,所以你的表达式永远为true。
      

  12.   

    很明显,你这个判断语句if(sex!="男"||sex!="女")不论输入什么其结果一直为true,当然一直输出“非男非女”了,而不是楼主说的没有进入if判断语句。