如何正确使用 toString 方法?

轨道枢纽

所以我在我的计算机科学实验室项目中处于领先地位,基本上我们正在创建一个活动时间跟踪器。该程序的目标是在控制台中输入分钟和秒,程序将获取这些值,并打印总时间,重复该过程,直到用户输入无效数字,程序将在该数字中终止。

ActivityManager 类的大部分内容已完成,由教授创建,只需要更改几行,并用注释表示。

这是那个类:

{
public static void main(String[] args) 
{
    // declare totalTime and activityTime of type Itime 
    Itime totalTime, activityTime;
    int minutes; double seconds; // user input values
    Scanner input = new Scanner (System.in); // to read user input

    // display purpose and author
    System.out.println ("This program tracks total time in minutes");  
    System.out.println ("and seconds for a series of activities."); 
    System.out.println ();  // print blank line
    System.out.println ("Author: ");
    System.out.println ();  // print blank line 

    // specify format for input 
    System.out.println ("Enter activity time in minutes and" 
        + " seconds, all in a");   
    System.out.println ("single line with spaces in between.  Entering" 
        + " values" ); 
    System.out.println ("outside appropriate ranges will terminate"
        + " the program."); 
    System.out.println ();  // print blank line

    // create the totalTime object of type Itime with 0 minutes and 0.0 seconds
    totalTime = new Itime(0,0.0);
    System.out.println ("Total time so far is: "
        + totalTime.toString()); 
    System.out.println ();  // print blank line

    // prompt and read time for an activity 
    System.out.print ("Enter time for an activity: ");   
    minutes = input.nextInt(); 
    seconds = input.nextDouble();

    // Accumulate if appropriate 
    while (minutes >= 0 && seconds >= 0 && seconds < 60) {
        // create the activityTime object of type Itime with given minutes and seconds
        activityTime = new Itime(minutes,seconds);
        // add totalTime and activityTime and put the result in totalTime
        totalTime = totalTime.addItime(activityTime);      
        System.out.println ("Total time so far is: "
            + totalTime.toString()); 
        System.out.println ();  // print blank line

        // prompt and read time for another activity
        System.out.print ("Enter time for an activity: ");   
        minutes = input.nextInt(); 
        seconds = input.nextDouble(); 
    }

    // wrap up and print final total
    System.out.println ("Sentinel received"); 
    System.out.println ();  // print blank line 
    System.out.println ("Total time so far is: "
        + totalTime.toString()); 
System.out.println ();  // print blank line

    // print closing remarks
    System.out.println ("Program has terminated."); 
    System.out.println ();  // print blank line 
}

我们的任务是通过创建一个 Itime 类来完成项目,它在这里:

{
private int minutes;
private double seconds;
public Itime(int minutes, double seconds){
    assert(minutes >= 0 && seconds >= 0 && seconds < 60);
}
public int getMinutes(){return minutes;}
public double getSeconds(){return seconds;}
public String toString(){
Itime totalTime = new Itime(minutes, seconds);
    String toString=this.minutes +" minutes and "+this.seconds+" seconds";
return toString;}
public Itime addItime(Itime bTime){
    int totalMinutes = this.minutes+bTime.getMinutes();
    double totalSeconds =  this.seconds+bTime.getSeconds();
    if(totalSeconds>60){
    totalSeconds-=60;
    totalMinutes+=1;
    }
    Itime totalTime = new Itime(totalMinutes,totalSeconds);
    return totalTime;
}

我对这个项目的问题是,无论我输入什么值,它都会返回 0 分钟和 0.0 秒的默认起始值​​。最初我认为我的问题是 addItime 方法,但在查看代码后,我相信问题出在 toString 方法中。

控制台打印出以下内容:

该程序以分钟和秒为单位跟踪一系列活动的总时间。

作者: 版本: 2019 年 1 月 25 日

以分钟和秒为单位输入活动时间,所​​有这些都在一行中,中间有空格。输入超出适当范围的值将终止程序。

到目前为止的总时间是:0 分 0.0 秒

输入活动时间:20 20

到目前为止的总时间是:0 分 0.0 秒

输入活动时间:

有什么建议么?

亚历克斯·夸德龙

欢迎使用堆栈溢出。(我这么说是因为我认为这是您第一次使用它,因为您在问题描述中附上了您拥有的所有代码。对于以后的问题,尽量只关注您认为问题所在的代码。无论如何,我希望你喜欢我们的社区)。

现在让我们集中在这里:

public String toString() {
    Itime totalTime = new Itime(minutes, seconds);
    String toString=this.minutes +" minutes and "+this.seconds+" seconds";
    return toString;
}

首先,您不需要创建该类的另一个实例,Itime因为您已经可以访问该toString()方法中的变量此外,这种方法并没有被破坏;它工作正常。

现在,检查构造函数:

public Itime(int minutes, double seconds) {
    assert(minutes >= 0 && seconds >= 0 && seconds < 60);
}

您永远不会分配minutes分配给seconds的实例ITime这就是为什么当您尝试打印任何给定实例时(我可能会猜测通过控制台),结果总是会得到默认值(零)。

构造函数应该看起来更像这样:

public Itime(int minutes, double seconds) {
    assert(minutes >= 0 && seconds >= 0 && seconds < 60);
    this.minutes = minutes;
    this.seconds = seconds;
}

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 toString() 方法替换显示方法?

来自分类Dev

如何从字段生成toString()方法?

来自分类Dev

使用toString()方法返回对象

来自分类Dev

使用子类中的 toString() 方法

来自分类Dev

如何正确调用toString

来自分类Dev

F#:应该如何正确使用ToString?

来自分类Dev

如何为ArrayStack实现toString()方法?

来自分类常见问题

如何在Java中重写toString()方法?

来自分类Dev

如何为对象的ArrayList创建toString方法?

来自分类Dev

如何覆盖Java中ArrayList的toString方法?

来自分类Dev

如何强制HyperJaxb生成toString()方法?

来自分类Dev

如何为ArrayStack实现toString()方法?

来自分类Dev

如何从DatePicker toString方法中删除日期?

来自分类Dev

如何覆盖 Java 中的 toString() 方法?

来自分类Dev

如何修改netbeans中的toString()方法(java)

来自分类Dev

如何重写 toString 方法以显示我的堆栈?

来自分类Dev

在ToString()方法中使用lock()进行收集

来自分类Dev

toString()方法和使用(+“”)之间的区别

来自分类Dev

使用Hadoop文本对象toString()方法

来自分类Dev

在Java中使用toString方法的问题

来自分类Dev

使用toString()方法显示用户的输入

来自分类Dev

如何从对象传递整数而不是使用toString()方法?

来自分类Dev

如何使用java中的节点编写toString方法

来自分类Dev

在Elm中,实现我自己的toString的正确方法是什么

来自分类Dev

为什么“ T.super.toString()”和“ super :: toString”使用合成访问器方法?

来自分类Dev

在Scala中重写toString并使用默认参数创建第二个toString方法

来自分类Dev

尽管使用了 Overridable/Overrides,但实现 ToString 不会覆盖原始的 ToString 方法。我想念什么?

来自分类Dev

覆盖模型tostring方法

来自分类Dev

String toString()方法

Related 相关文章

  1. 1

    如何使用 toString() 方法替换显示方法?

  2. 2

    如何从字段生成toString()方法?

  3. 3

    使用toString()方法返回对象

  4. 4

    使用子类中的 toString() 方法

  5. 5

    如何正确调用toString

  6. 6

    F#:应该如何正确使用ToString?

  7. 7

    如何为ArrayStack实现toString()方法?

  8. 8

    如何在Java中重写toString()方法?

  9. 9

    如何为对象的ArrayList创建toString方法?

  10. 10

    如何覆盖Java中ArrayList的toString方法?

  11. 11

    如何强制HyperJaxb生成toString()方法?

  12. 12

    如何为ArrayStack实现toString()方法?

  13. 13

    如何从DatePicker toString方法中删除日期?

  14. 14

    如何覆盖 Java 中的 toString() 方法?

  15. 15

    如何修改netbeans中的toString()方法(java)

  16. 16

    如何重写 toString 方法以显示我的堆栈?

  17. 17

    在ToString()方法中使用lock()进行收集

  18. 18

    toString()方法和使用(+“”)之间的区别

  19. 19

    使用Hadoop文本对象toString()方法

  20. 20

    在Java中使用toString方法的问题

  21. 21

    使用toString()方法显示用户的输入

  22. 22

    如何从对象传递整数而不是使用toString()方法?

  23. 23

    如何使用java中的节点编写toString方法

  24. 24

    在Elm中,实现我自己的toString的正确方法是什么

  25. 25

    为什么“ T.super.toString()”和“ super :: toString”使用合成访问器方法?

  26. 26

    在Scala中重写toString并使用默认参数创建第二个toString方法

  27. 27

    尽管使用了 Overridable/Overrides,但实现 ToString 不会覆盖原始的 ToString 方法。我想念什么?

  28. 28

    覆盖模型tostring方法

  29. 29

    String toString()方法

热门标签

归档