嗨,我是新来的,通常是编程新手。我的老师告诉我们尝试使用十进制到双转换器。好吧,我试过这样做,并认为我正确的方式,但不知何故,代码只是保持运行而不显示转换后的数字。所以我认为它内部可能存在无限循环,但作为一名新手程序员我无法找到它。帮助将不胜感激。
以下是代码:
import javax.swing.*;
public class dezimalZuDual {
public static void main(String[] args) {
int dezimalZahl = Integer.parseInt(JOptionPane.showInputDialog("Hier eine Dezimalzahl eingeben:"));
int neu = dezimalZahl;
String dualZahl = "";
while(neu != 0)
{
neu = dezimalZahl / 2;
String rest = Integer.toString(dezimalZahl - neu * 2);
dualZahl = rest + dualZahl;
}
JOptionPane.showMessageDialog(null, "Die Dezimalzahl " + dezimalZahl + " ist im Dualzahlensystem ausgedrückt: " + dualZahl + ".");
}
}
代码编译时没有任何错误,最后一行的消息将永远不会显示。
答案 0 :(得分:7)
此处的问题是您正在neu = dezimalZahl / 2;
进行更改neu
,但您永远不会更改dezimalZahl
。
例如:
dezimalZahl = 10;
neu = 10/2 // (which is 5);
// rest of your code
然后你检查neu != 0
,这是真的,因为它是5.然后你再次运行你的循环,你做同样的事情,但dezimalZahl
仍然是10!这意味着neu
将始终为5,这意味着您永远不会离开循环。
答案 1 :(得分:1)
问题是neu
从未改变
while(neu != 0)
{
neu = dezimalZahl / 2;
String rest = Integer.toString(dezimalZahl - neu * 2);
dualZahl = rest + dualZahl;
//you are not changing(decreasing) value of neu
//nor you are changing dezimalZahl which would affect neu value
//so while loop returns true everytime and goes on
}