簡體   English   中英

為什么該整數不為0卻返回0?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM