从头开始观察元素,数组b中的字符改变了多少次
how many times the character in the array b changes by observing the elements from the beginning
public static int changeSign(int [] b) {
int counter=0 ;
for(int i=0;i<b.length;i++) {
if(b[i]>0 && b[i+1]<0) {
counter++;
}
if(b[i]<0 && b[i+1]>0) {
counter++;
}
}
return counter;
}
例如u 10, -4, 12, 56, -8, -9
,字符变化3
次
您遇到的问题是 ArrayIndexOutOfBoundsException
,因为当 i
是 b.length-1
时,您尝试访问 b[i+1]
,这是 b[b.length]
,这是不可能的,因为索引从0开始,所以你需要在前一步停止。
同样只得到一个条件,可以相乘,看结果的符号:
public static int changeSign(int[] b) {
int counter = 0;
for (int i = 0; i < b.length - 1; i++) {
if (b[i] * b[i + 1] < 0) {
counter++;
}
}
return counter;
}
public static int changeSign(int [] b) {
int counter=0 ;
for(int i=0;i<b.length;i++) {
if(b[i]>0 && b[i+1]<0) {
counter++;
}
if(b[i]<0 && b[i+1]>0) {
counter++;
}
}
return counter;
}
例如u 10, -4, 12, 56, -8, -9
,字符变化3
次
您遇到的问题是 ArrayIndexOutOfBoundsException
,因为当 i
是 b.length-1
时,您尝试访问 b[i+1]
,这是 b[b.length]
,这是不可能的,因为索引从0开始,所以你需要在前一步停止。
同样只得到一个条件,可以相乘,看结果的符号:
public static int changeSign(int[] b) {
int counter = 0;
for (int i = 0; i < b.length - 1; i++) {
if (b[i] * b[i + 1] < 0) {
counter++;
}
}
return counter;
}