所以我还有另外一个任务要做,任务是使用compareTo方法按字母顺序分配3个字符串。基本上程序从测试器类接收3个字符串(a,b和c),它应该返回“getMin”,“getMiddle”和“getMax”。
我想出了getmin和max,看起来很简单但是我遇到了getMiddle的问题。 这就是我对min和max的看法:
String min = "";
if (a.compareTo(b) <= 0 && a.compareTo(c) <= 0) min = a;
else if (b.compareTo(a) <= 0 && b.compareTo(c) <= 0) min = b;
else if (c.compareTo(b) <= 0 && c.compareTo(a) <= 0) min = c;
return min;
同样对于get max只是略有不同。我该如何创建getMiddle。我们也不允许使用数组,因为我们尚未“学习”它们。而且教授说中间的代码应该在5-6行左右。
由于
答案 0 :(得分:6)
乘以compareTo方法的值。 如果值为middle,则compareTo方法的结果具有不同的符号。 乘法结果为零或有负号。
String getMiddle(String a,String b,String c)
{
String middle = "";
if (a.compareTo(b)*a.compareTo(c) <= 0) middle = a;
else if (b.compareTo(a)*b.compareTo(c) <= 0) middle = b;
else if (c.compareTo(b)*c.compareTo(a) <= 0) middle = c;
return middle;
}
答案 1 :(得分:1)
String middle = "";
if (a.compareTo(b) <= 0 && a.compareTo(c) >= 0) middle = a;
else if (b.compareTo(a) <= 0 && b.compareTo(c) >= 0) middle = b;
else if (c.compareTo(b) <= 0 && c.compareTo(a) >= 0) middle = c;
return middle;
答案 2 :(得分:1)
按照自己的方式行事,它看起来像这样:
if (a.compareTo(b) > 0 && a.compareTo(c) <= 0) middle = a;
else if (a.compareTo(c) > 0 && a.compareTo(b) <= 0) middle = a;
else if (b.compareTo(a) > 0 && b.compareTo(c) <= 0) middle = b;
else if (b.compareTo(c) > 0 && b.compareTo(a) <= 0) middle = b;
else middle = c;
return middle
嗯,这是它背后的一般要点。你可以把它们中的一些组合起来用于更少的线,但我会把它留给你。
答案 3 :(得分:1)
为什么这么复杂?只需使用TreeSet ,它在内部使用compareTo()。)。
答案 4 :(得分:0)
这给了mid ..还没有测试过它...而且,对于行预测的数量,我不确定我遇到的很好......反正......
String mid = "";
if (a.compareTo(b) <= 0) {
if (b.compareTo(c) <= 0) mid = b;
else mid = c;}
else if(a.compareTo(c) <= 0) mid = a;
else mid = c;
return mid;
答案 5 :(得分:0)
我只使用TreeSet,因为它在添加数据后对数据进行排序。