我一直在尝试使用输入框,例如,用户输入“ activate tv”,然后在一行上显示电视的状态,例如,初始行是“ tv(no)”,用户输入“激活电视”后显示“ tv(yes)”,反之亦然,当用户输入“停用电视”时,该行应更新并显示“ tv(no)”。
我想使用一个数组,就像用户开始时可以输入的项目数量一样,但是我不知道如何解决该问题,以便为用户输入的每个项目的状态创建一个数组,并可以将其激活/由用户使用输入框停用。
//USING A BOOLEAN FOR (YES) / (NO)
boolean status = false;
String stat;
if (status == false) {
stat = "(no)";
}else {
stat = "(yes)";
}
//CREATES AN ARRAY OF SIZE INPUTTED BY THE USER
String[] Item = new String[amount];
for (int i = 0; i < Item.length; i++) {
Item[i] = showInputDialog("Please enter item?");
}
System.out.print("The available items are: ");
//PRINTS THE INPUT BY THE USER FROM ARRAY TO CONSOLE
String joinedString = String.join(stat+", ", Arrays.asList(Items));
System.out.print(joinedString);
System.out.print(sta);
//I DON'T KNOW HOW I COULD USE THIS INPUT DIALOG TO ACTIVATE AND DEACTIVATE THE ITEMS IN THE ARRAY
String input = showInputDialog("activate / deactivate?");
因为我是Java的初学者,所以我对如何解决此问题的任何建议将不胜感激。
问题来源:Stack Overflow
我要解决此问题的方法如下:
import java.util.HashMap;
public class ItemManager {
private HashMap<String, Boolean> itemMap;
private final Boolean DEFAULT_STATUS = false;
ItemManager(){
itemMap = new HashMap<String, Boolean>();
}
// Add a new item with a given name and default status (False)
public void addItem(String name) {
itemMap.put(name, DEFAULT_STATUS);
}
// Add a new item with a given name and custom status
public void addItem(String name, Boolean status) {
itemMap.put(name, status);
}
// Check whether an item exists
public Boolean itemExists(String name) {
if (getStatus(name) == null) {
return false;
} else {
return true;
}
}
// Remove an item with given name
public void removeItem(String name) {
itemMap.remove(name);
}
// Update the status of an existing item. Note this uses the same .put method so we simply call addItem()
public void setStatus(String forItem, Boolean status) {
addItem(forItem, status);
}
// Get the status of a given item
public Boolean getStatus(String forItem) {
return itemMap.get(forItem);
}
}
显然,在使用ItemManager类时,在更新状态之前,您必须小心检查项目是否存在(否则setStatus()无论如何都将创建该项目-注意它的调用方式addItem()-原因是如果密钥HashMap.put()将添加一个新<key, value>对不存在HashMap,或更新密钥的值(如果确实存在)。理想情况下,您应该实施错误处理,以便updateStatus()在该项目尚不存在时抛出错误,但是错误处理是更高级的主题,因此值得将来保存。
为了说明以上几点,我的View类执行以下操作:
case "activate":
itemName = activateItemTextField.getText();
activateItemTextField.setText("");
if (itemManager.itemExists(itemName)) {
itemManager.setStatus(itemName, true);
outputLabel.setText(itemName + "(yes)");
} else {
outputLabel.setText("Item doesn't exist!");
}
break;
这给我留下了如下的东西。不好意思,我很抱歉-自从我使用Swing以来已经很久了,我把它赶到一起。
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。