In Java 8+, use StringJoiner
:
public String getDescription() {
StringJoiner description = new StringJoiner(" & ");
if (line.contains("A"))
description.add("Apple");
if (line.contains("B"))
description.add("Banana");
if (line.contains("C"))
description.add("Carrot");
return description.toString();
}
In Java 5+, use StringBuilder
and if
statements:
public String getDescription() {
StringBuilder description = new StringBuilder();
if (line.contains("A")) {
description.append("Apple");
}
if (line.contains("B")) {
if (description.length() != 0)
description.append(" & ");
description.append("Banana");
}
if (line.contains("C")) {
if (description.length() != 0)
description.append(" & ");
description.append("Carrot");
}
return description.toString();
}
Or, as pointed out by kaya3:
public String getDescription() {
StringBuilder description = new StringBuilder();
String sep = "";
if (line.contains("A")) {
description.append(sep).append("Apple");
sep = " & ";
}
if (line.contains("B")) {
description.append(sep).append("Banana");
sep = " & ";
}
if (line.contains("C")) {
description.append(sep).append("Carrot");
sep = " & ";
}
return description.toString();
}
Or the way the question code is trying to do it:
public String getDescription() {
StringBuilder description = new StringBuilder();
if (line.contains("A"))
description.append("Apple & ");
if (line.contains("B"))
description.append("Banana & ");
if (line.contains("C"))
description.append("Carrot & ");
if (description.length() != 0)
description.setLength(description.length() - 3); // remove final " & "
return description.toString();
}
Test
System.out.println(new VeggiesAndFruits("").getDescription());
System.out.println(new VeggiesAndFruits("A").getDescription());
System.out.println(new VeggiesAndFruits("B").getDescription());
System.out.println(new VeggiesAndFruits("C").getDescription());
System.out.println(new VeggiesAndFruits("AB").getDescription());
System.out.println(new VeggiesAndFruits("AC").getDescription());
System.out.println(new VeggiesAndFruits("BC").getDescription());
System.out.println(new VeggiesAndFruits("CBA").getDescription());
Output (same for all 4 solutions above)
Apple
Banana
Carrot
Apple & Banana
Apple & Carrot
Banana & Carrot
Apple & Banana & Carrot