java - 需要帮助弄清楚为什么我的 TestClock.java 程序上出现 java.lang.StackOverflowError

标签 java eclipse

您好,感谢您提供的任何帮助,

我对 Java 还很陌生,我需要一些帮助来弄清楚为什么我的程序无法运行。当我编译并使用两个命令行参数(11:45:12 11:48:13)时,一切看起来都很好。当我运行该程序时,它会返回此错误:

Exception in thread "main" java.lang.StackOverflowError at Clock.toString(Clock.java:37)

我忘记做什么了?知道我需要修复什么吗?

这是代码:

对于我的时钟类:

//header files

import java.time.LocalTime;
import static java.lang.System.out;

// creating class clock
public class Clock {

// private data fields
private LocalTime startTime;
private LocalTime stopTime;

// no argument cosntructor to initilize startTime to current time
protected Clock() {
    startTime = LocalTime.now();
}

//method start() resets the startTime to the given time
protected LocalTime start() {
    startTime = LocalTime.now();
    return startTime;
}

//method stop() sets the endTime to given time
protected LocalTime stop() {
    stopTime = LocalTime.now();
    return stopTime;
}

//getElapsedTime() method returns elapsed time in sconds
private void geElapsedTime() {
    long elapsedTime = stopTime.getSecond() - startTime.getSecond();
    out.println("Elapsed time is seconds: " + elapsedTime);
}

public String toString() {
    return toString();
}
}

对于我的 TestClock 类:

// header files
import java.time.LocalTime;
import static java.lang.System.err;
import static java.lang.System.out;

// creating class of TestClock
class TestClock {

// construct a clock instance and return elapsed time
public static void main(String[] args) {

// creating object
    Clock newClock = new Clock();

// checking the condition using loop
    if (args.length == 2) {
        LocalTime startTime = LocalTime.parse(args[0]);
        LocalTime endTime = LocalTime.parse(args[1]);
    }
    else {
        err.println("Application requires 2 command line arguments");
                  System.exit(1);
    }

// display new clock value
    out.println(newClock);

}


}

最佳答案

Clock 类中的 toString() 方法正在递归调用自身。我认为您可能想要 super.toString() ,尽管在这种情况下,首先重写该方法是不必要的。如果您想打印时间,可以使用 startTime.toString()stopTime.toString()

关于java - 需要帮助弄清楚为什么我的 TestClock.java 程序上出现 java.lang.StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31364008/

相关文章:

java - 如何以编程方式隐藏 View ?

java - 在 Java 8+ 中对 map 进行分区

java - 双击后不启动 .jar 文件

java - Spring Boot 中的分析

java - Jersey servlet 的 web.xml 不响应请求

java - 为什么在 Wildfly 8.2.1 中访问 EJB 2.1 时出现 ClassCastException?

Java邮件API连接存储在本地服务器但未连接到开发服务器

java - 如何发布数据库更新?

java - 使用 Firebase 在 Android 应用程序中使用 Spring Boot

android - 使用Eclipse的Media Player播放YouTube视频