Определения: (Идет работа с массивом от первого до последнего поля)
Массив -
Резко падает = 88,55,33,22,1; (может быть массив в два поля = 1,4);
Резко возрастает = 1,15,33,44; (может быть массив в два поля = 5,2);
Монотонно возрастает = 1,3,15,15,33,55;
Монотонно падает = 88,55,33,33,22,1;
Задание:
if toschka == true && vvod == резко возрастает, End = true;
if toshka == false && vvod == резко падает, End = true;
if (toschka == false || toschka == true) && (vvod == null || vvod.length == 0), End = false;
if (toschka == false || toschka == true) && vvod.length == 1, End = true;
我的代码,我在哪里搞砸了?
public static boolean End(int[] vvod, boolean toschka) {
boolean Otvet = false;
boolean dvoinoeVosvr = false;
boolean vozvrastanie = false;
int a = 0;
while (a < vvod.length) {//Pruef ob monoton steigend
for (int j = 0; j < vvod.length; j++)
for (int k = j + 1; k < vvod.length; k++) {
if (k != j && vvod[k] == vvod[j]) {
dvoinoeVosvr = true;
break;
}
}
for (int i = 0; i < vvod.length - 1; i++) {
if (vvod[i] > vvod[i + 1]) {
vozvrastanie = false;
break;
} else {
vozvrastanie = true;
break;
}
}
a++;
}
if (vvod == null && vvod.length == 0) {
Otvet = false;
} else if (vvod.length == 1){
Otvet = true;
} else if (toschka == true && vozvrastanie == true){
Otvet = true;
} else if (toschka == false && vozvrastanie == false) {
Otvet = true;
}
return Otvet;
}
}
在截图中,方法和方法变量的名称已更改,代码相同
当函数不返回任何内容时,您的代码中有六个选项,以及一个 - 当某些内容返回时。必须为此做点什么。
null
在使用此参数进行长时间操作后检查参数看起来也很不错。从任何地方删除这些条件:
这些条件值得努力。首先,在问题的条件下没有明确定义——数组中的值必然增加或减少,或者可以上下任意变化。
在第二种情况下,您需要遍历循环并确保值在整个长度上沿一个方向变化。由于没有指定,我们将使用简化版本。
双增的条件也没有明确规定。从代码中我将假设这是每个后续数字不同的时候。
在程序员的职业中,这很重要: 1. 要求所有条件。2.不要做超过要求。
查看
它应该以这种形式移到方法的开头:
这种情况需要纠正。现在第二次检查将失败并出现 NullPointerException。如果我们把这个条件翻译成俄语:“如果输入为空,并且它的长度为零。”
正确的决定:
“如果输入为空,或者它的长度为零。” 如果第一个条件 == true,则不会检查第二个条件。
循环。
这里的一切都很糟糕。一个额外的循环,不必要的检查,不必要的变量。重写代码更便宜:
要检查的测试:
我还建议您使用小写字母命名变量和方法。