Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用数组为跑步比赛编写程序_Java - Fatal编程技术网

Java 使用数组为跑步比赛编写程序

Java 使用数组为跑步比赛编写程序,java,Java,编写一个程序,询问三名跑步者的姓名以及他们完成一场比赛所用的时间(以分钟为单位)。程序应按跑步者完成的顺序显示跑步者的姓名 该程序适用于整数,但无法排列小数。如果我将变量更改为整数,则输入会导致错误。有解决办法吗 import java.util.Arrays; import java.util.Scanner; class Runners implements Comparable<Runners> { public String name;

编写一个程序,询问三名跑步者的姓名以及他们完成一场比赛所用的时间(以分钟为单位)。程序应按跑步者完成的顺序显示跑步者的姓名

该程序适用于整数,但无法排列小数。如果我将变量更改为整数,则输入会导致错误。有解决办法吗

import java.util.Arrays;
import java.util.Scanner;

    class Runners implements Comparable<Runners> {
        public String name;
        public double time;
        
        public Runners(String name, double time) {
            this.name = name;
            this.time = time;    
        }

        public String toString() {
            return String.format(" %s: %.2f minute(s) ", name, time);
        }

        public int compareTo(Runners other) {
            return (int) (this.time - other.time);
        }
    }
    
未排序的小数:

如果更改为int,则返回错误:

compareTo不要求您返回算术结果。您只需返回一个整数,表示项目是否等于、大于或小于

public int compareTo(Runners other) {
    if(this.time == other.time)
       return 0;
    else if(this.time > other.time)
       return 1;
    else 
       return -1;
}
请参阅compareTo上的文档。还要注意的是,比较双打并不总是像你期望的那样。我添加了上面的示例用法,但您可能只返回Double.compareTod1,d2。请参阅。

compareTo不要求您返回算术结果。您只需返回一个整数,表示项目是否等于、大于或小于

public int compareTo(Runners other) {
    if(this.time == other.time)
       return 0;
    else if(this.time > other.time)
       return 1;
    else 
       return -1;
}

请参阅compareTo上的文档。还要注意的是,比较双打并不总是像你期望的那样。我添加了上面的示例用法,但您可能只返回Double.compareTod1,d2。请参阅。

如果您询问错误,最好发布输入和完整的错误消息。@HoverCraftFullOfels很抱歉回滚,我没有注意html注释的效果。当您说无法排列小数时,排列是什么意思?错误帖子应该以代码格式的文本而不是图像的形式发布。请浏览以了解如何更好地使用此网站,如何使回答您的问题更容易。由于无法排列小数,我的意思是它只是根据输入顺序打印名称,如图所示。如果您询问错误,最好发布输入和完整的错误消息。@HovercraftFullOfEels抱歉回滚,我没有注意到html注释有什么影响。当你说不能排列小数时,你说的排列是什么意思?错误帖子应该以代码格式的文本而不是图像的形式发布。请浏览以了解如何最好地使用此网站,如何使回答您的问题更容易。由于无法安排小数,我的意思是,它只是根据输入顺序打印名称,如图中所示。还值得一提的是,OP的解决方案不起作用,因为转换为int将类似于6.7-6.1=0.6的内容转换为6.7-6.1=0,从而丢弃了数字较大的信息。谢谢,这两种解决方案都很有效。我彻底检查了一下。还值得一提的是,OP的解决方案不起作用,因为将int转换为6.7-6.1=0.6会将类似于6.7-6.1=0的内容转换为6.7-6.1=0,这会丢弃数字较大的信息。谢谢,两种解决方案都很有效。我仔细检查了一下。