gingerhaus38
gingerhaus38

Reputation: 11

How to find shortest word in a java string without using arrays?

I'm trying to use the same format of this code which I followed through a tutorial. It will print the longest word as well as the length of the longest word. The tutor told me that to find the shortest word I have to flip the if statement to be less than ('<') instead of greater than... however, after I enter any string, when I run the program it returns:

"Shortest Word: "", length: 0"

I'm not sure how to fix this so it looks for an actual word and not an empty character.. I'd like to follow the same logic here without using arrays as well.

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());

Upvotes: 1

Views: 1206

Answers (1)

Eran
Eran

Reputation: 393781

One thing you have to do is change

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

to

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

However, that's not enough, since lw in initialized to an empty String, so the condition will always be false (w.length() will never be < 0).

Therefore you also have to check whether lw is still empty:

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

The full code:

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());

Upvotes: 1

Related Questions