【问题标题】:My code does not correctly compare strings of different length我的代码没有正确比较不同长度的字符串
【发布时间】:2015-03-19 20:32:39
【问题描述】:

我应该编写一个比较方法,它基本上完成了 compareTo 方法的作用。我已经编写了代码,但它没有比较不同长度的字符串。 这是我的代码:

public static int compare(String a, String b)
{
    int result = 0;
    a = a.toLowerCase();
    b = b.toLowerCase();
    //program assumes strings are equal

    for (int i = 0; i<a.length() && i<a.length(); i++) {
        int c = a.charAt(i);
        int d = b.charAt(i);

        if (c < d){
            result = -1;
            break;
        }
        if (a.length() > b.length()) {
            result = -1;
            break;
        }
        if (a.length() < b.length()) {
            result = +1;
            break;
        }

        if (c > d) {
            result = 1;
            break;
        }
    }
    return result;
}

我已经完成了一个 if 循环,比较了 2 个不同长度的字符串,但是,程序忽略了这一点。 我试图理解我的错误,所以请不要不解释就给我答案,因为我不会学到任何东西。 提前谢谢。

【问题讨论】:

  • 您是否尝试过使用调试器?如果您使用某种 IDE,它应该带有合适的接口。尝试单步执行程序并特别注意您编写的所有条件以及它们如何影响代码。尝试比较字符串“Ala lubi kota”“Ala ma kota”。
  • 为了学习目的没关系。但所有其他方式都使用 String.equals() 方法。在软件工程中有句谚语——“不要重新发明轮子”
  • 我正在使用 DrJava。我不知道它是否有,但是,是的,我会这样做。

标签: java string compare


【解决方案1】:

首先,在逐个字符比较时,您要确保i 的长度小于a 的长度和b 的长度。现在,您将 ia's 的长度进行了两次比较。

试试:

//                                *
for (int i = 0; i<a.length() && i<b.length(); i++){

其次,如果您比较每个字符相等直到其中一个字符结束,您只想比较长度。将长度比较放在for 循环之后。

第三,"mars""marshall" 之前,所以如果a 的长度小于b 的长度,那么它也比较少。

// After the for loop ends:
if(a.length() > b.length()){
     result = 1;
     break;   }
if(a.length() < b.length()){
     result = -1;
     break;

【讨论】:

  • 很好!!非常感谢队友!!我完全理解你所说的,当然在你的帮助下我修复了我的代码:)
猜你喜欢
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 2021-01-21
  • 2017-02-07
  • 1970-01-01
相关资源
最近更新 更多