1.三元运算符中包含与字符相关的条件判断语句时, 容易出错
错误写法(这里G[i-1]虽然是一个int数值,但是会自动与s.charAt(i) == 'G’的结果相加, 这里不管G[i-1]的数值是0还是非0,只要s.charAt(i) == 'G’为false,那么整个表达式G[i-1] + s.charAt(i) == 'G’也为false;不管G[i-1]的数值是0还是非0, 只要s.charAt(i)=='G’为true,那么整个表达式G[i-1] + s.charAt(i) == 'G’也为true。换句话,G[i-1] + s.charAt(i) == 'G’表达式的取值只与后面的这个条件表达式有关):
G[i] = G[i-1] + s.charAt(i) == 'G'? 1: 0;
正确写法:
G[i] = G[i-1] + (s.charAt(i) == 'G'? 1: 0);