我的代码有什么问题?我试图做这个问题,但我找不到一个好的解决方案。如果可以,请帮助我!?
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[] scores = new int[n];
int c = 0;
for(int i = 0; i < scores.length; i++){
scores[i] = scan.nextInt();
}
for(int j = scores.length-1; j >= 0; j--){
boolean b = scores[j] <= scores[j-1] ? true : false;
if(b == false){
c++;
}
}
if(c > 0){
System.out.print(false);
}
答案 0 :(得分:0)
添加if statement
以检查是否j > 0
时,您的代码可以正常运行,因此在使用-1索引检查0索引时不会出现异常
for(int j = scores.length-1; j >= 0; j--){
if(j > 0) {
boolean b = scores[j] <= scores[j-1] ? true : false;
if(b == false){
c++;
}
}
}
答案 1 :(得分:-1)
我真的不明白你的代码,但这个for循环可以满足你的需要:
for(int i=0; i<scores.length-2; i++) {
if(scores[i] > scores[i+1]) {
return false;
}
}
return true;
基本上我们需要做的是运行数组中的所有元素,除了最后一个元素(位于scores.length-1
的位置)因为我们将检查最后一个元素我们比较第二个最后一个元素时的元素。
一旦我们找到了不满足if条件的2个相邻元素就没有必要进一步检查,我们可以立即返回错误。
如果我们扫描了所有元素并且没有发现任何违规行为,我们可以返回true。