Аналогичный код, но одна версия не возвращает строку, когда она должна - PullRequest
0 голосов
/ 23 ноября 2018

Для упражнения в классе мы с другом написали похожий код.Она работает, пока моя выдает:

Ошибка: этот метод должен возвращать результат типа java.lang.String

Ее код:

 public static String alphaString (String a, String b) {

    for (int i=0; i<a.length(); i++){
      if ((int)(a.charAt(i)) < ((int)(b.charAt(i)))) {
        return a;
      }
      if ((int)(a.charAt(i)) > ((int)(b.charAt(i)))) {  
        return b;
      }
    }

    return ("these are the same words") ;

  }

Мой код:

// метод, который принимает две строки и возвращает ту, которая стоит первой в алфавите

// alphaString ("банан", "яблоко") -> "яблоко"

// alphaString ("snake", "squirrel") -> "snake".

public static String alphaString(String s1, String s2) {


for (int i = 0; i<s1.length(); i++ ) {
    if (s1.charAt(i)<s2.charAt(i)) {
        return s1;
    }
    if (s1.charAt(i)>s2.charAt(i)){
        return s2;

    }


}

Теперь я могу сказать, что наши переменные имеют разные имена и что она использует (int) (хотяЯ не думаю, что это необходимо).Я не понимаю, почему ее код работает, а мой нет.Если я попытаюсь также добавить (int) и сделать код еще более похожим, я все равно получу ошибку.

Кто-нибудь знает, почему это может быть?

1 Ответ

0 голосов
/ 23 ноября 2018

Похоже, вам не хватает значения по умолчанию возврата "these are the same words".Непонятно, почему вы оба решили реализовать это с помощью цикла (или почему ни один из вас не решил использовать else).В любом случае, String - это Comparable, поэтому я бы просто сделал

public static String alphaString(String s1, String s2) {
    int c = s1.compareTo(s2);
    if (c < 0) {
        return s1;
    } else if (c > 0) {
        return s2;
    }
    return "these are the same words";
}
...