如何获得在 Java 中输入句子所需的时间

如何解决如何获得在 Java 中输入句子所需的时间

我有一个很复杂的问题,希望能得到一些帮助。 我的老师问了一个家庭作业问题,我们发现输入一个句子“Hello World!”需要多长时间。并使用 Date 类以毫秒为单位打印出来,同时检查它是否正确。 这是我目前所拥有的

vec[index] = std::move(newelement);

我查了一些东西,我正在尝试使用 getTime 方法,但它不允许我使用它。

我的主要想法是使用 getTime 来检查用户输入句子所用的时间,但我完全不知道该怎么做。

解决方法

System.nanoTime 计算纳秒

我认为您已经接近了,但该方法需要一些改进。

public static void main(String[] args)  {
    Scanner hello = new Scanner(System.in);
    // starting time
    long start = System.nanoTime();
    System.out.println("Your job is to type the sentence \"Hello World!\" as fast as you can.");
    System.out.println("When you are ready,press enter,type the sentence,and press enter again.\n");
    String sen = hello.nextLine();
    while (!sen.equals("Hello World!")) {
        System.out.println("Incorrect Input");
        sen = hello.nextLine();
    }
    // end time
    long elapsedTime = System.nanoTime() - start;
    System.out.println("It took you "elapsedTime"ns to type Hello World!");
}
,

java.util 的日期时间 API 及其格式化 API SimpleDateFormat 已过时且容易出错。建议完全停止使用它们并切换到 modern date-time API。出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 和 7。

使用现代日期时间 API:

import java.time.Instant;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner hello = new Scanner(System.in);
        System.out.println("Your job is to type the sentence \"Hello World!\" as fast as you can.");
        System.out.println("When you are ready,and press enter again.");
        System.out.println("");
        long start = Instant.now().toEpochMilli();
        String sen = hello.nextLine();
        if (sen.equals("Hello World!")) {
            System.out.println("You took " + (Instant.now().toEpochMilli() - start) + " milliseconds");
        } else {
            System.out.println("Incorrect Input");
        }
    }
}

示例运行:

Your job is to type the sentence "Hello World!" as fast as you can.
When you are ready,and press enter again.

Hello World!
You took 4711 milliseconds

Trail: Date Time 了解现代日期时间 API。

此外,使用 String#equals 而不是 == 来比较字符串。

如果您需要使用 java.util.Date

import java.util.Date;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner hello = new Scanner(System.in);
        System.out.println("Your job is to type the sentence \"Hello World!\" as fast as you can.");
        System.out.println("When you are ready,and press enter again.");
        System.out.println("");
        Date date = new Date();
        long start = date.getTime();
        String sen = hello.nextLine();
        if (sen.equals("Hello World!")) {
            date = new Date();
            long end = date.getTime();
            System.out.println("You took " + (end - start) + " milliseconds");
        } else {
            System.out.println("Incorrect Input");
        }
    }
}
,

其他答案是正确的,最好使用System.nanotime()Instant(所以你的老师错了)。无论如何,由于您必须使用 Date,因此我将尝试解释您尝试使用 getTime 方法时出了什么问题。因为您是对的:如果您使用的是旧的且设计不佳的 Date 类,请使用其 getTime 方法。

您也调用了自己的类 Date。所以这里有两个类名相同的类在玩,这就产生了麻烦。当你这样做时:

    Date d1 = new Date();

——那么您正在创建您自己的 Date 类的实例,而不是您的老师(可能)所指的 java.util.Date 类的实例。例如,当您下次尝试时(您没有在问题中向我们展示,但您应该这样做):

    long time = d1.getTime();

——然后​​ Java 发现您自己的 Date 类没有 getTime 方法并发出错误消息。

TL;DR 解决方案是调用您自己的类而不是 Date

PS 有一些方法可以处理两个具有相同名称的类,但它从来没有那么容易阅读,我不建议在此处使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?