3

I have following method:

public static void sentence(String sen)
{

    String[] array = sen.split(" ");
    String[] five = Arrays.copyOfRange(Array, 0, 5);

    if (Array.length < 6)
        System.out.println(sen);
    else
        System.out.print(Arrays.toString(five));
}

As an argument I enter a sentence. If the sentence is longer than 5 words I only want the first 5 words to be printed out. What happens is that the printout when sen > 5 looks something like:

[word1, word2, word3, word4, word5]

What I want it to look like is:

word1 word2 word3 word4 word5

Any suggestion on how to convert the array to a normal sentence format as in the latter example?

5 Answers 5

5

If you are using Java 8, you can use String.join String.join:

public static void sentence(String sen) {
    String[] array = sen.split(" ");
    String[] five = Arrays.copyOfRange(Array, 0, 5);

    if (Array.length < 6)
        System.out.println(sen);
    else
        System.out.print(String.join(" ",five));
}
Sign up to request clarification or add additional context in comments.

1 Comment

Why do all the splitting and joining if only needing the first five? What if array is very long?
2

From the way you asked the question, it seems your problem is with joining the words. You can have a look at this question for that: https://stackoverflow.com/a/22474764/967748
Other answers here work as well.

Some minor things to note:

To optimise slightly, you could use the optional limit parameter to String.split. So you would have

String[] array = sen.split(" ", 6); //five words + "all the rest" string

You could also avoid unnecessary copying, by bringing the String[] five = ... statement inside the if. (Or removing that logic entirely)

ps: I believe the guard in the if statement should be lowercase array

Comments

1

You can use this method:

String sentence = TextUtils.join(" ", five);

1 Comment

He can't use it without importing the necessary library. You should mention that.
1

Another solution, avoiding the .split() (and .join()) in the first place

String res = "";
Scanner sc = new Scanner(sen); //Default delimiter is " "
int i = 0;
while(sc.hasNext() && i<5){
    res += sc.next();
    i++;
}
System.out.println(res);

res can be subsituted to a string builder for performance resasons, but i don't remember the exact syntax

Comments

0

try StringUtils

System.out.println(StringUtils.join(five, " "));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.