为什么不循环启动?

时间:2013-06-18 18:39:09

标签: java loops while-loop

我有以下代码,除了while循环外,一切似乎都在工作,这里是代码:

JLabel img = new JLabel(loadingScreens.getImageIcon(0));
    loadingFrame.setUndecorated(true);
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    double width = screenSize.getWidth();
    double height = screenSize.getHeight();
    int wid = (int) width;
    int hgt = (int) height;
    wid = wid/2;
    hgt = hgt/2;
    wid -=350;
    hgt -=350;
    loadingFrame.setLocation(wid, hgt);

    loadingFrame.setSize(700, 700);
    loadingFrame.setBackground(new Color(0,0,0,0));
    loadingFrame.add(img);
    loadingFrame.setIconImage(loadingScreens.getImage(0));
    loadingFrame.setVisible(true);
    System.out.println("Done 1");
    try{
    Thread.sleep(500);
    System.out.println("Done 2");
    }catch(Exception e){
        System.out.println("exception caught");
    }

    Integer lo = 0;
    System.out.println("Done 3");
    while(lo.equals(256)){

        System.out.println("Started 4");

        loadingFrame.setBackground(new Color(lo, lo, lo, lo));

        loadingFrame.repaint();
        try{
            Thread.sleep(10);
        }catch(Exception e2){

        }
        lo++;
    }

loadingFrame是一个基本的JFrame。

任何帮助都很有用

2 个答案:

答案 0 :(得分:5)

while循环在指定条件为true时循环。您已将lo初始化为0,该值不等于256,因此永远不会输入循环体。

因为你在循环中增加lo,或许你的意思相反:

while(!lo.equals(256)){

Java中的!运算符否定了布尔条件,因此它显示为:“当lo 等于256”时。

答案 1 :(得分:1)

这是因为虽然总是以truth语句开头而不是false,而lo.equals("256")正在给false,因为lo = 0和零从不等于256。
如果你想开始循环,你必须否定这样的条件:

while(!lo.equals("256") 
//then start the loop