In codewars I have completed a kata using for loop with 15 lines of code, some other person has completed it with just 7 lines. Could anybody explain the code?
public class CamelCase {
public static String cAmEl(final String yourName) {
final int length = yourName.length();
final StringBuilder cAmEl = new StringBuilder(length);
boolean upper = true;
for (int i = 0; i < length; i++, upper ^= true) {
final char c = yourName.charAt(i);
cAmEl.append(upper ? toUpperCase(c) : toLowerCase(c));
}
return cAmEl.toString();
}
}
The code converts every alternate character of a string to uppercase (starting with an uppercase character). For example: test
becomes TeSt
.
I am unable to understand this part
cAmEl.append(upper ? toUpperCase(c) : toLowerCase(c));
The part you don't understand is a ternary. Ternary contains of three parts. part one: Condition
part two: True statement
part three: False Statement
As you can see in for statement upper will be XOR to literal value true.
So in each iterate of the for statement value of upper variable will be reverse, so true statement and false statement in ternary will be called.