[英]Why does this integer return 0 although it's not 0?
我正在創建一個應該執行控制台命令的軟件。 該命令因您在實際應用程序中設置的配置而異。
問題是,其中一個命令(總共4個)需要捕獲一個整數才能進行配置。
通過以下代碼通過下拉列表設置整數:
private String[] osList = {"Choose OS", "Windows 7 Pro", "Windows 7 Home Basic", "Windows 7 Home Premium", "Windows 7 Ultimate"};
private JComboBox osDropDown = new JComboBox(osList);
public int osIndex;
osDropDown.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
Object item = e.getItem();
if(item.equals(osList[1])) {
osIndex = 3;
} else if(item.equals(osList[2])) {
osIndex = 1;
} else if(item.equals(osList[3])) {
osIndex = 2;
} else if(item.equals(osList[4])) {
osIndex = 4;
}
}
}
});
如您所見,例如,如果您選擇“ Windows 7 pro”,則變量osIndex應該設置為3。
這是執行的命令:
"dism /mount-wim /wimfile:install.wim /index:" + formPanel.osIndex + " /mountdir:mount"
但是出於某種奇怪的原因,無論我選擇列表中的哪個項目,它都會在osIndex上返回0。而且我不知道為什么?
如果使用此代碼,則在列表中選擇osIndex時,它將輸出正確的osIndex值。 但是當我嘗試選擇后運行命令時,它仍然返回0。
if(item.equals(osList[1])) {
osIndex = 3;
System.out.println(osList[1] + " [" + osIndex + "]");
} else if(item.equals(osList[2])) {
osIndex = 1;
System.out.println(osList[2] + " [" + osIndex + "]");
} else if(item.equals(osList[3])) {
osIndex = 2;
System.out.println(osList[3] + " [" + osIndex + "]");
} else if(item.equals(osList[4])) {
osIndex = 4;
System.out.println(osList[4] + " [" + osIndex + "]");
}
編輯:似乎數組中的命令已設置,並且一旦我更改列表中的項目就不會更改。 我需要以某種方式做到這一點,當我更改列表項時; 這就是將數組中的命令分配給變量的地方。 關於如何執行此操作的任何好主意?
編輯2:通過這樣做解決了; 單擊“執行”按鈕后,它將數組中的命令文本設置為:
cmdExec.cmd[3] = "dism /mount-wim /wimfile:install.wim /index:" + formPanel.getOsIndex() + " /mountdir:mount";
不可能這是最好的解決方案,但這幾乎是我目前能想到的唯一解決方案。 如果有人有更好的主意,請告訴我!
什么都沒有“歸還”。 根本不會重新分配默認值。
真實測試-使用調試器並設置一些斷點。 System.out是一種測試某些事物的簡便方法
但是,因為您的字符串可以正常打印,所以似乎每次更新osIndex變量時都需要創建一個新的命令字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.