Reputation: 351
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
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
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
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
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
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
Reputation: 4601
You can use wrongLetters.forEach(System.out::print); in Java 8
Upvotes: 0