gpt4 book ai didi

java - 为什么这个整数不是 0,却返回 0?

转载 作者:行者123 更新时间:2023-12-02 03:05:12 25 4
gpt4 key购买 nike

我正在创建一个应该执行控制台命令的软件。该命令根据您在实际应用程序中设置的配置而有所不同。

问题是,其中一个命令(总共 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;
}
}
}
});

如您所见,变量 osIndex 应设置为 3,例如,如果您选择“Windows 7 pro”。
这是执行的命令:

"dism /mount-wim /wimfile:install.wim /index:" + formPanel.osIndex + " /mountdir:mount"

但由于某种奇怪的原因,无论我选择列表中的哪个项目,它都会在 osIndex 上返回 0..我不知道为什么?

如果我使用此代码,当我在列表中选择该代码时,它会输出正确的 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:通过这样做解决了它;一旦我单击“Go”按钮,它将数组中的命令文本设置为:

cmdExec.cmd[3] = "dism /mount-wim /wimfile:install.wim /index:" + formPanel.getOsIndex() + " /mountdir:mount";

这不可能是最好的解决方案,但它几乎是我目前唯一能想到的解决方案。如果有人有更好的想法,请告诉我!

最佳答案

没有任何东西被“返回”。默认值根本不会被重新分配。

真实测试 - 使用调试器并设置一些断点。 System.out 是一种不稳定的测试方式

但是由于您的字符串打印得很好,似乎您每次更新 osIndex 变量时都需要创建一个新的命令字符串

关于java - 为什么这个整数不是 0,却返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41846768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com