为什么可以先使用String eingabe;
来保存int m
然后再保存为int n
。我认为Strings,一旦声明只能用于保存另一种方法的信息。或者它是否存储“彼此相邻”之类的值,当被告知打印到控制台时它会取出所需的值?
代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
int m, n, r;
String eingabe;
eingabe = JOptionPane.showInputDialog("Geben sie ganze Zahl fuer m ein: ");
m = Integer.parseInt(eingabe);
eingabe = JOptionPane.showInputDialog("Geben Sie eine ganze Zahl für n ein: ");
n = Integer.parseInt(eingabe);
r = m%n;
while (r > 0) {
m = n;
n = r;
r = m % n;
}
System.out.println("ggT = " + n);
}
}
答案 0 :(得分:3)
String变量eingabe未用于存储多个输入。在行之后
eingabe = JOptionPane.showInputDialog("Geben sie ganze Zahl fuer m ein: ");
eingabe 是对您要解析为int m 的任何值的引用。接下来就行了
eingabe = JOptionPane.showInputDialog("Geben Sie eine ganze Zahl für n ein: ");
将重新分配引用以指向您从 showInputDialog 获得的新String值。
这里没有什么奇怪的事。 eingabe 引用的值刚刚更改。你可能会对在Java中使用不可变的字符串感到困惑。这是一个不同的概念,因为它意味着永远不能更改String实例。但是,此处没有更改String实例,只是指向不同字符串的引用变量。
总而言之, eingabe 是一个引用,它在代码的不同点指向内存中的不同String。它永远不会持有对两个字符串的引用。