如何使用 if 语句来引用字符串列表的选择?

问题描述 投票:0回答:1

我正在尝试使用 if 语句来:

  1. 如果用户选择一周中的某一天
  2. 然后用当天的家务填充数组列表

目前我的 if 语句似乎没有引用选择一周中的哪一天,而是仅输出列表长度的“else”。

有没有更好的方法来解决这个问题?

附注我是一个java新手,所以如果问题的措辞很奇怪,我深表歉意:)谢谢!

`导入 javax.swing.*; 导入java.util.List; 导入 java.awt.BorderLayout;

公开课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<>());

    box.addActionListener( evt->{
       DefaultListModel<String> model = (DefaultListModel<String>)chores.getModel();
       model.clear();

       model.addElement(box.getSelectedItem() + " Chores");
       for(int i = 0; i < days.size(); i++) { 
        if (days.equals("Monday")) {
            model.addElement("1. Clean the Bathroom");
            model.addElement("2. Do the Laundry");
            model.addElement("Do it");
       }
        else 
            model.addElement("No Chores!");
            
       }
    });
    
    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 );

}

}`

java if-statement
1个回答
0
投票

您的问题在于这一行:

if (days.equals("Monday")) {

days 是一个字符串列表,因此它永远不会等于一个字符串,即使该字符串是列表中唯一的字符串。

您需要做的,与您之前所做的相同,从您的盒子中取出所选的项目。只需将 if 语句替换为以下语句即可:

if ( box.getSelectedItem().equals("Monday")) {

或者,遵循一些好的做法:

if ( "Monday".equals(box.getSelectedItem()) {

即使发生了一些可疑的事情,并且

box.getSelectedItem()
将返回 null,这也可以避免抛出
NullPointerException

© www.soinside.com 2019 - 2024. All rights reserved.