idontunderstandarrays
idontunderstandarrays

Reputation: 351

Print all characters from ArrayList after each other

I have this ArrayList

ArrayList<Character> wrongLetters;

And this syso

System.out.println("Number of errors: " + wrongLetters.size() + " (" +  String.join("", String.valueOf(wrongLetters)) + ")");

It now prints like this

Number of errors: 9 ([X, M, S, K, B, Q, L, I, U])

But how can I make it like this

Number of errors: 9 (XMSKBQLIU)

Upvotes: 1

Views: 188

Answers (6)

Mamun Kayum
Mamun Kayum

Reputation: 161

make a string from the arraylist of the characters

String str = "";
for (Character c : wrongLetters) {
    str += c;
} 

then :

System.out.println("Number of errors: " + wrongLetters.size() + " (" +  String.join("", str) + ")");

or make a string builder :

StringBuilder stringBuilder= new StringBuilder(wrongLetters.size());

    for (Character c : wrongLetters) {
      stringBuilder.append(c);
    }

then:

       System.out.println("Number of errors: " + wrongLetters.size() + " (" +  String.join("", stringBuilder.toString()) + ")");

Upvotes: 0

Isnarf
Isnarf

Reputation: 3

String.valueOf(wrongLetters) calls toString() on array of characters thats why it look likt this. Join is called only for one String here [X, M, S, K, B, Q, L, I, U]. You have to change ArrayList to String. Check this -> Converting ArrayList of Characters to a String?

Upvotes: 0

Akceptor
Akceptor

Reputation: 1932

Stupid answer (just remove non-alphanumerics):

System.out.println("Number of errors: " + wrongLetters.size() + " (" + String.join("", String.valueOf(wrongLetters).replaceAll("[^A-Za-z0-9]", ""))+ ")");

One more for Java 8+:

StringJoiner joiner = new StringJoiner("");
    wrongLetters.stream().forEach(err -> joiner.add(String.valueOf(err)));
    System.out.println("Number of errors: " + wrongLetters.size() + " (" + joiner + ")");

No Java 8 (using StringBuilder):

StringBuilder sb = new StringBuilder(" (");
    for (Character character : wrongLetters) {
        sb.append(character);
    }
    sb.append(")");
    System.out.println("Number of errors: " + wrongLetters.size() + sb.toString());

Upvotes: 0

tworogue
tworogue

Reputation: 429

Java 8 or later:

final String result = wrongLetters.stream().map(String::valueOf).collect(Collectors.joining());
System.out.println("Number of errors: " + wrongLetters.size() + " (" +  result + ")");

Upvotes: 2

Jai Prakash
Jai Prakash

Reputation: 11

You can do it by this way using Java 8

System.out.println(wrongLetters.stream().map(x -> x.toString()).collect(Collectors.joining()));

Upvotes: 0

Mohamed Anees A
Mohamed Anees A

Reputation: 4601

You can use wrongLetters.forEach(System.out::print); in Java 8

Upvotes: 0

Related Questions