程序为什么运行不正确啊?编译通过。

public class Xm
{
    public static void main(String[] args)
    {    java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.println("请输入天气情况:");
        String weather=s.next();

        System.out.println("请输入您的性别:");
        String sex=s.next();
        


        if(weather == "下雨")
        {
            System.out.println("带雨伞");
            
            if(sex == "男 ")
            {
                System.out.println("带一把大雨伞");
            } else if(sex=="女")
             {
                 System.out.println("带一把小花伞");
             }
        }
    }
}

package com.auskat.demo.cc;

/**
 * 类文件: TestM
 * <p>
 * <p>
 * 类描述:
 * <p>
 * 作     者: AusKa_T
 * <p>
 * 日     期: 2021/5/27 0027
 * <p>
 * 时     间: 14:46
 * <p>
 */
public class TestM {


    public static void main(String[] args) {
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.println("请输入天气情况:");
        String weather = s.next();

        System.out.println("请输入您的性别:");
        String sex = s.next();

        if (weather.equals("下雨")) {
            System.out.println("带雨伞");

            if (sex.equals("男")) {
                System.out.println("带一把大雨伞");
            } else if (sex.equals("女")) {
                System.out.println("带一把小花伞");
            }
        }
    }
}

 

 

String类型的字段比较时,使用“==”和“equals()”方法比较字符串时,其比较方法不同。

 1、“==”比较两个变量本身的值,即两个对象在内存中的首地址。

 2、“equals()”比较字符串中所包含的内容是否相同。

你改成equals()应该就可以了

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		System.out.println("请输入天气情况:");
		String weather = s.next();
		System.out.println("请输入您的性别:");
		String sex = s.next();
		if ("下雨".equals(weather)) {
			System.out.println("带雨伞");
			if ("男".equals(sex)) {
				System.out.println("带一把大雨伞");
			} else if ("女".equals(sex)) {
				System.out.println("带一把小花伞");
			}
		}
		s.close();
	}