Как найти самое короткое слово в строке java без использования массивов? - PullRequest
1 голос
/ 12 февраля 2020

Я пытаюсь использовать тот же формат этого кода, который я использовал в учебнике. Он напечатает самое длинное слово, а также длину самого длинного слова. Преподаватель сказал мне, что, чтобы найти самое короткое слово, мне нужно перевернуть оператор if, чтобы он был меньше ('<'), а не больше ... однако, после ввода любой строки, когда я запускаю программу, она возвращает: </p>

"Кратчайшее слово:" ", длина: 0"

Я не уверен, как это исправить, чтобы он искал реальное слово, а не пустой символ .. Я хотел бы следуйте той же логике c здесь без использования массивов.

Scanner in = new Scanner(System.in);

System.out.println("Please enter a phrase: ");
String phrase = in.nextLine();


String w = "";
String lw = "";       
int l;
char ch;


phrase = phrase + " ";
l = phrase.length();
int i;
for (i=0; i < l; i++) {
    ch = phrase.charAt(i);
    if(ch != ' ') {
        w = w + ch;
    } else {
        if(w.length() > lw.length()) {
            lw = w;
        }
        w = "";
    }
}

System.out.println("Longest Word: \"" + lw + "\", length: "+ lw.length());

1 Ответ

1 голос
/ 12 февраля 2020

Одна вещь, которую вам нужно сделать, это изменить

if(w.length() > lw.length())

на

if(w.length() < lw.length())

Однако этого недостаточно, поскольку lw в инициализированном пустом String, поэтому условие всегда будет false (w.length() никогда не будет <0). </p>

Поэтому вам также необходимо проверить, пусто ли lw:

if(w.length() < lw.length() || lw.isEmpty ()) {
    lw = w;
}

Полный код:

Scanner in = new Scanner(System.in);

System.out.println("Please enter a phrase: ");
String phrase = in.nextLine();

String w = "";
String lw = "";       
int l;
char ch;

phrase = phrase + " ";
l = phrase.length();
int i;
for (i=0; i < l; i++) {
    ch = phrase.charAt(i);
    if(ch != ' ') {
        w = w + ch;
    } else {
        if(w.length() < lw.length() || lw.isEmpty ()) {
            lw = w;
        }
        w = "";
    }
}

System.out.println("Shortest Word: \"" + lw + "\", length: "+ lw.length());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...