我想我得到了一个无限循环

时间:2015-02-11 17:51:05

标签: java

嗨,我是新来的,通常是编程新手。我的老师告诉我们尝试使用十进制到双转换器。好吧,我试过这样做,并认为我正确的方式,但不知何故,代码只是保持运行而不显示转换后的数字。所以我认为它内部可能存在无限循环,但作为一名新手程序员我无法找到它。帮助将不胜感激。

以下是代码:

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 + ".");
}
}

代码编译时没有任何错误,最后一行的消息将永远不会显示。

2 个答案:

答案 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
    }