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,这会丢弃数字较大的信息。谢谢,两种解决方案都很有效。我仔细检查了一下。