【问题标题】:Program freeze after input?输入后程序冻结?
【发布时间】:2012-05-31 04:33:08
【问题描述】:

在用户输入他们的选择后,程序似乎再次提供相同的选择,然后完全冻结。它只设置在那里给他们一次选项(我相信),然后按照下面的选择。相反,它似乎恢复到顶部,然后由于某种奇怪的原因冻结。尝试了一段时间,但无济于事。

public void init() //Initialize method {

    setSize(1000, 800); //Set size
    Container c = getContentPane();
    c.setBackground(Color.GREEN); //Set background
}    


public void paint(Graphics g)  {

    super.paint(g); //Start paint method
    g.setFont(new Font("Veranda", Font.PLAIN, 20));
    g.setColor(Color.BLACK);
    g.drawString("Hello", 250, 25); //top display message
    String number = JOptionPane.showInputDialog("Would you like a custom loop count or an infinite? 1. Custom 2. Infinite"); //test choice
    n = Integer.parseInt(number);

    while (n>0 || n<2)
    if (n==1) { 
            String number2 = JOptionPane.showInputDialog("How many times would you like to loop?");
            integer = Integer.parseInt(number2);
            while (integer>0)
                while (x < integer) {   
                    g.drawString("hi", 200, y); 
                    x+=1;
                    y = y+40; //test
                }//end while
    }//end if 
    else if (n==2)  {
        while (true); //im aware this is an endless loop. Can't find anything more stable for an endless one, so its just there for now..
    }//end if   
    else;
    g.drawString("Please pick a valid choice", 200, 200);               
}//end paint
}//end

【问题讨论】:

  • 添加一个标有 Java 的标签,以便知道它的人可以提供帮助——这样您的代码就会被着色。
  • while (integer &gt; 0) 看起来非常可疑。按照 Java 的解析规则,它包含一个语句——下一个 wwile 循环。
  • while (true) 是一个无限循环:while (false) 什么都不做,但不用说它令人困惑!
  • while (true);做某事 - 它永远不会停止并破坏您的程序。

标签: java loops input while-loop freeze


【解决方案1】:

这是我的理解

while (integer>0) {
    while (x < integer)
    {   
        g.drawString("hi", 200, y); 
        x+=1;
        y = y+40; //test
    }//end while
    integer --; // <-- This is missing
}
break; // <-- Also missing

当 x = integer 时,内部 while 结束 但整数总是 > 0 你必须在外循环的末尾做integer -- 所以它可以在某个时候变为0

请使用适当的缩进...它有帮助

我编辑了代码...看看我把“整数--”放在哪里

尝试将您的 while(n&gt;0 || n&lt;2) 转换为 if(n&gt;0 &amp;&amp; n&lt;2)

尽量不要使用while 而不是if,这样会减少混乱

为您的所有代码块添加括号{},更易于阅读,因此更易于调试,也许您只需这样做就可以解决问题

最后一个else 之后的; 也是有意的吗?

【讨论】:

  • 不太明白你的意思,抱歉。如果您可以对此进行扩展,那就太好了:)对缩进感到抱歉,我对Java有点陌生:/我或多或少是自己学习的,因为我的老师没有帮助任何这些。
  • 没关系,这似乎并没有解决问题。我把整数--;在你给我看之后,什么都没有改变.. :/
  • 你给它什么输入... 1?
  • 你需要一个主while循环的突破条件
  • 是的,我给了它一个输入 1,仍然没有工作.. 我刚刚取出一段时间,不能让它工作:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2020-10-11
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多