【发布时间】:2019-01-17 12:45:17
【问题描述】:
我在学校有一项任务,其中一项要求是对狗进行排序。除了这个要求,我已经在我的代码中完成了所有工作,因为我不知道该怎么做。下面你可以看到这部分作业的描述:
7 命令:“列出狗” 此命令包含在您在提交步骤四中提交的程序中,但要求有所更改。改变的是列表必须排序,所有者必须出现在打印输出中,并且如果没有注册的狗应该有错误消息。 此命令列出注册表中的狗。用户必须得到一个关于最小尾巴长度的问题,并且程序必须打印出犬舍中所有尾巴长度相同或更长的狗的列表。如果您输入 0,那么所有的狗都会被打印出来。如果改为指定 10,则仅写入尾长大于或等于 10 的狗。 打印时,必须打印所有狗的属性和尾巴长度。这包括此版本程序中的可能所有者。该列表应按尾长排序。如果两条狗的尾巴长度相同,则必须按名称排序。
示例:列出狗 命令>列出狗 显示的最小尾长> 1 以下狗有这么大的尾巴: * Fido(腊肠犬,1 年,2 公斤,3.70 厘米尾巴) * Karo(斗牛犬,8 岁,7 公斤,5.60 厘米尾巴,Henrik 拥有) * Milou(梗犬,7 岁,8 公斤,5.60 厘米尾巴)
如果没有狗登记,就不应该有最小尾巴长度的问题。相反,应该打印一条错误消息。确保错误消息包含一些单词error或error,否则测试程序无法识别它是错误消息。 示例:列出狗 命令>列出狗 错误:注册中没有狗
这是我的“列出狗”的代码
private void listDogs() {
System.out.print("Smallest tail length to display: ");
kennelList.sort(Comparator.comparing(dog -> dog.getName()));
double tailLength = input.nextDouble();
input.nextLine();
int y = 0;
while (y < kennelList.size()) {
Dog dTail = kennelList.get(y);
if (dTail.getTailLength() >= tailLength) {
System.out.println(dTail);
}
y++;
}
}
【问题讨论】:
-
@Echoinacup 不需要,她已经有了这个
Comparator.comparing(dog -> dog.getName()) -
@m0skit0 抱歉,我赶时间发表评论。
-
基于您在 kennelList 上使用 while 进行迭代:在您的 while 循环之外声明一个新 List
,根据您的尾长条件将 Dog 添加到列表中,最后 - 对在尾部长度上使用比较器列出。 -
不应该是
Comparators.comparingInt(Dog::getTailLength).thenComparing(Dog::getName) -
@strelok 是的!当我改为那个时,问题就解决了......非常感谢!忘了包括尾巴长度
标签: java list sorting sortedlist