当前位置: 首页 > 知识库问答 >
问题:

Java-如何在使用nextInt()时保持计时器运行

通正平
2023-03-14

我已经建立了一个测验,它产生随机的数学问题。在main方法中,我有一个while循环,它使用System.CurrentTimeMillis()方法。在while循环中,我使用了Scanner对象中的nextInt()方法。这在一定程度上停止了计时器的工作。简而言之,我试图给用户10秒钟来完成10个简单的数学问题。当计时器用完时,我只想系统出用户的分数。请看代码,以便更好地理解我在做什么。

    int score = 0;
    Scanner input = new Scanner(System.in);
    QuizGenerator qg = new QuizGenerator();
    ArrayList<Question> quiz = qg.generateQuiz();

    long startTime = System.currentTimeMillis(); //fetch starting time
    while(false||(System.currentTimeMillis()-startTime)<10000) {
        for(Question q : quiz) {
            System.out.println(q.getQuestion());
            int playerAnswer = input.nextInt();
        }
    }
    System.out.println("You scored: " + score);

共有1个答案

常经赋
2023-03-14

只需使用java.util.Timer就可以做到这一点。例如,

 public class QuizeRunner{

    int score = 0;
    Scanner input = new Scanner( System.in );
    QuizGenerator qg = new QuizGenerator();
    ArrayList<Question> quiz = qg.generateQuiz();

    long startTime = System.currentTimeMillis(); //fetch starting time

    //timer
    Timer timer = new Timer();
    timer.schedule( new TimerTask()
    {
        @Override
        public void run()
        {
            if ( ( System.currentTimeMillis() - startTime ) / 1000 > 10 )
            {
                System.out.println( "time out !!. score " + score );
                System.exit( 0 );
            }
        }

    }, 1000, 1000 );


    //ask questions
    for ( Question q : quiz )
    {

        System.out.println( q.getQuestion() );
        int playerAnswer = input.nextInt();
    }

    System.out.println( "You scored: " + score );
 }
 类似资料:
  • 我已经开始使用推荐的,并不再使用。其中一件我无法粘合的事情是使用持久的cookie存储。我只想在我的连接上附加一个定制的cookie处理程序/管理器来存储cookie。Android文档并没有太大帮助,因为它将有关cookie的主题概括为两行。 我之前一直在使用LoopJ的PersistentCookieStore,效果很好。 关于如何在Android中设置一个持久的cookie存储,我可以附加到

  • 我将为我的后期项目创建一个移动的圆圈,圆圈将继续移动,它的内部颜色将像颜色发射一样变化,变化的颜色将在5个级别中从小圆圈到大圆圈,所以如何保持每个颜色的变化保持一段时间,我希望这些代码与线程一起出现,所以我创建了两个线程,一个控制圆圈移动,另一个控制圆圈的内部颜色发射,这里是我的代码:

  • 问题内容: 这是我的第一篇文章.. 因此,我正在学习Android和Java(来自Actionscript),并且正在从事以下项目: 我试图单击一个ImageView,让该ImageView交换图像一秒钟,然后返回到原始图像。(这是针对窃听游戏的) 听起来很容易,对吧?我花了整整一天的时间试图让一个标准的Java Timer / TimerTask工作..没有运气.. 有没有更好的办法?我的意思是

  • 问题内容: 在SQL Server中,我想创建一个表来节省事件的时间,并希望将其转换为用户选择的时区以进行显示。让我们说,如果在格林尼治标准时间1:00 PM在伦敦发生事件,那就是美国东部标准时间上午8:00。 给定这个例子,我想创建一个框架, 用户可以保存事件和时间的位置(提供事件的时区) 阅读这些事件,并在他喜欢的时区(美国东部时间)中显示时间 如何在SQL Server中完成此操作。 问题答

  • 问题内容: 因此,我在Google上搜索了几分钟如何使用计时器,并在此处找到了一些有用的线程。但是,当我想使用建议的代码时,Eclipse总是向我显示错误。 这是我现在要使用的代码。Eclipse在最后一行下划线,并在它们建议“删除参数以匹配’Timer()’”时加下划线。此外,它强调了start()并希望将其强制转换。:S 有人可以帮我吗?我已经安装了最新的Java版本^^ 多谢。 问题答案:

  • 基本上,我想做的是制作一个计时器,在x秒后运行一个特定的TimerTask,但是TimerTask可以重新安排计时器在y秒后执行任务。下面是一个示例,它在我试图在TimerTask run中调度此任务的行上给出了一个错误“线程中的异常”Timer-0“java.lang.IllegalStateException:任务已调度或已取消”。