You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java求助:如何用if语句根据选中星期填充对应任务列表?

问题分析与解决方案

原代码的核心问题

  1. 判断条件错误:你用days.equals("Monday")做判断,但days是整个星期列表的List对象,永远不可能等于字符串"Monday",应该获取下拉框选中的具体日期字符串。
  2. 多余循环:遍历整个星期列表(7次)完全没必要,选中一个日期只需要处理一次对应任务即可,循环会导致重复添加7次内容。

优化实现方式

推荐用Map<String, List<String>>存储每天对应的家务任务,代码更简洁易维护,避免大量if-else分支。

修正后的完整代码

import javax.swing.*;
import java.util.List;
import java.util.Map;
import java.awt.BorderLayout;

public class DayChooser{

    void buildGui(){
        JFrame frame = new JFrame("Daily Chore Chart");
    
        // 定义星期列表
        List<String> days = List.of("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" );
        JComboBox<String> box = new JComboBox<>(days.toArray(new String[0]));
        JList<String> chores = new JList<>(new DefaultListModel<>());

        // 用Map存储每天的家务任务
        Map<String, List<String>> choreMap = Map.of(
            "Monday", List.of("1. Clean the Bathroom", "2. Do the Laundry", "Do it"),
            "Friday", List.of("1. Take out Trash", "2. Vacuum the Floor"),
            "Saturday", List.of("1. Deep Clean Kitchen", "2. Water Plants")
            // 可继续添加其他日期的任务,未定义的日期默认显示无家务
        );
    
        box.addActionListener( evt->{
           DefaultListModel<String> model = (DefaultListModel<String>)chores.getModel();
           model.clear();
           
           // 获取选中的日期
           String selectedDay = (String) box.getSelectedItem();
           model.addElement(selectedDay + " Chores");
           
           // 根据选中日期获取对应任务,无匹配则显示无家务
           List<String> dailyChores = choreMap.getOrDefault(selectedDay, List.of("No Chores!"));
           dailyChores.forEach(model::addElement);
        });
        
        // 初始化默认显示内容
        DefaultListModel<String> model = (DefaultListModel<String>)chores.getModel();
        model.addElement("Daily Chores");
        model.addElement("1. Make the Bed");
        model.addElement("2. Clean the Litterbox");
        model.addElement("3. Wash the Dishes");
        model.addElement("4. Wipe down the Counters");
    
        frame.add(box, BorderLayout.NORTH);
        frame.add(chores, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
        frame.setSize(400,400);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
    
    public static void main(String[] args){
       DayChooser dc = new DayChooser();
       SwingUtilities.invokeLater( dc::buildGui );
    }
}

关键改进点

  • 用Map存储日期与任务的对应关系,后续修改或添加任务只需调整Map,无需改动逻辑代码
  • 正确获取下拉框选中的日期字符串(String) box.getSelectedItem()
  • 用getOrDefault简化逻辑:选中日期有对应任务则添加,否则添加"No Chores!"
  • 移除多余循环,避免重复输出内容

内容的提问来源于stack exchange,提问作者abbey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 11:46:08