**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
我尝试从用户那里输入一个String
值,并将其存储到一个全局变量中,这个输入在我示例化它的方法中运行良好,但问题是如果我尝试从另一个方法调用全局变量,它的值会被设置回null
。
下面是输入的代码:
Object select;
select = JOptionPane.showInputDialog(this, "Choisissez le département : ", "Boîte de dialogue",
JOptionPane.QUESTION_MESSAGE, icone, liste, liste[0]);
this.select = select.toString();
此时,如果我在控制台中打印this.select
,它的值会正确显示,现在当我从其他地方调用它时:
public void afficherInfos() throws IOException {
//some code
d = new Dep(Integer.parseInt(liste.get(Arrays.asList(d.getDeps()).indexOf(this.getSelect()))));
}
因为indexOf(this.getSelect())
返回-1
,所以显示IndexOutOfBoundsException
,因为程序在数组中找不到它。当我在这个方法中打印this.getSelect()
时,控制台显示null
,但是我看不出丢失值的可能性,因为它是正确示例化和存储的。
2条答案
按热度按时间ippsafx71#
我认为这似乎与提升和类型转换有关,我知道当我们用console打印一些示例时,那个示例用toString()打印,但是你在indexOf中使用这个.getSelect()
ulydmbyx2#
全局变量是可以在java程序中的任何地方访问的变量。从技术上讲,全局变量在Java中是不允许的。由于Java是面向对象的,所以一切都是类的一部分。可以声明一个静态变量,它可以对一个类的所有示例都可用。那么,在您的情况下,您可以在indexOf中使用这个.getSelect()。