繁体   English   中英

Java,按字母顺序对字符串进行排序,不包含数组

[英]Java, sort strings alphabetically without arrays

因此,我还有另一项工作要做,任务是使用compareTo方法按字母顺序对3个字符串进行分类。 基本上,程序从测试器类接收3个字符串(a,b和c),并且应该返回“ getMin”,“ getMiddle”和“ getMax”。

我弄清楚了getmin和max,似乎很容易,但是我在getMiddle中遇到了问题。 这就是我的最小和最大:

        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行左右。

谢谢

乘以compareTo方法的返回值。 如果值为中间,则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;
}
 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;

用自己的方式做,看起来像这样:

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

好吧,这就是背后的一般要点。 您可以将其中一些合并在一起以减少行数,但我将由您自己决定。

为什么这么复杂? 只需使用TreeSet ,它就在内部使用compareTo():)。

这给了中点..没有经过全面测试..而且,关于行数的预测,我不确定我是否很好地满足了...无论如何...

    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;

我将只使用TreeSet是因为它在添加数据后对数据进行排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM