-1
   import java.util.Scanner;
   import java.lang.Thread;

   class OrigClass {
   public static void main (String[] args){


   for(int i = 0; i<=10;i++){
      System.out.println(i);
      thread.sleep(1000);
   }
  }
 }

如您所见,我希望程序最多计数 10。我需要输入什么才能使其工作?

我可能应该说错误是 Eclipse 中的“线程无法解析”。

4

7 回答 7

2

sleep()Thread类的静态方法,代码中没有实例变量thread。我假设这会引发 NullPointerExcepetion。

class OrigClass {

    public static void main(String[] args) {
        try {
            for (int i = 0; i < 10; i++) {
                System.out.println(i);

                Thread.sleep(1000); // was thread.sleep(1000)
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
于 2013-06-26T12:19:30.233 回答
1

尝试

try {
    for (int i=1;i<=10;i++) {
      System.out.println(i);
      Thread.sleep(1000);
    }
 } catch(InterruptedException e) {
        e.printStackTrace();
 }
于 2013-06-26T12:20:01.803 回答
1

线程类可能会抛出异常。所以将 Thread.sleep(1000) 放在 try-catch 块中。

public static void main (String[] args) throws InterruptedException
    {
        for(int i = 0; i<=10;i++)
        {
            System.out.println(i);
            Thread.sleep(1000);
        }
    }
于 2013-06-26T12:21:56.013 回答
0

你需要一个大写的't';即写Thread.Sleep();。但是我更喜欢使用java.util.concurrent.TimeUnit.SECONDS.sleep(1);它,因为它更清晰。

而且你需要处理java.lang.InterruptedException,否则代码将无法编译。

把这个放在一起写

try {
    for (int i = 0; i < 10; ++i){
        /* Print the counter then sleep for a bit
         * Perhaps this is the wrong way round?
         */
        System.out.println(i);
        java.util.concurrent.TimeUnit.SECONDS.sleep(1);
    }
} catch (final java.lang.InterruptedException e){
   // ToDo - Handle the interruption.        
}
于 2013-06-26T12:26:01.033 回答
0

javac OrigClass.java

java OrigClass

如果这是您要的,将编译并运行它。

于 2013-06-26T12:20:52.227 回答
0

你这样做

try {
  for(int i = 0; i < 10; i++) {
      Thread.sleep(1000);
      System.out.println("Counter at " + i + " seconds");
  }
} catch(InterruptedException e) {
  // Thread got interrupted
}
于 2013-06-26T12:22:43.887 回答
0

如果您不想自己处理 Thread.sleep(),并且有充分的理由应该避免它,您可以使用 Timer 和 TimerTask。下面的一个例子

import java.util.Timer;
import java.util.TimerTask;

public class TimerSample {

    public static void main(String[] args) {
        TimerTask task = new TimerTask() {

            int count = 0;

            @Override
            public void run() {
                // Whenever task is run, we will print the count
                System.out.println(count);
                count++;

                // If count reaches 10, we will cancel the task                    
                if (count >= 10) {
                    cancel();
                }
            }
        };

        //Schedule a timer that executes above task every 1 second
        Timer t = new Timer();
        t.schedule(task, 0, 1000);
        return;
    }
}

此处描述了更多有趣的用例:http: //www.ibm.com/developerworks/java/library/j-schedule/index.html

于 2013-06-26T12:56:04.377 回答