我的代码是这样的:
Scanner sc=new Scanner(System.in);
System.out.println("Type in your order(ex.5 7 4 6 8 3 9 2 0 1 - SPACES REQUIRED): ");
String input=sc.nextLine();
String[] b=input.split(" ");
sc.close();
boolean isMixed=false;
for(int i=0; i < input.length()/2; i++) {
if(Integer.parseInt(b[i]) < Integer.parseInt(b[i+1])) { // Condition of "int input"
isMixed=false; // What to print when the condition is true
}
else // When condition is false
isMixed=true;
// Prints this when the above condition is true
}
if(isMixed=false)
{
System.out.println("Mixed");
} else
{
System.out.println("Ascending");
}
}
但是当我输入的是1 3 2 4 5 6 7 8 9
时,它显示为Ascending
。我该怎么做才能解决此错误?我应该带走,添加或更改任何东西吗?
答案 0 :(得分:0)
if(isMixed=false)
将永远无法工作,因为您错过了==
而不是=
。因此,您只是将false
的值分配给isMixed,并且false将永远不会执行if块。
input.length()/2
是一种获取数组中元素数量的聪明方法,但是在许多情况下,它会使您失败。 Occam的Razor-请改用b.length
,因为它包含元素的绝对数量。
对于整个isMixed = true;
区块,请这样思考:除非证明自己有罪,否则您是无辜的。没有中途。同样,如果[i]
处的元素大于[i+1]
处的元素,则isMixed应该变为true
。不需要条件再次变为假。如果任何两个元素处于混合顺序,则整个输入将变得混合,因此您可以跳出循环。
Scanner sc=new Scanner(System.in);
System.out.println("Type in your order(ex.5 7 4 6 8 3 9 2 0 1 - SPACES REQUIRED): ");
String input=sc.nextLine();
String[] b=input.split(" ");
sc.close();
boolean isMixed=false;
for(int i=0; i < b.length-1; i++)
{
if(Integer.parseInt(b[i]) > Integer.parseInt(b[i+1]))
{
isMixed = true;
break;
}
// Prints this when the above condition is true
}
if(isMixed==true)
{
System.out.println("Mixed");
} else
{
System.out.println("Ascending");
}
我将尽快对此进行解释,但是我建议您将其与您的错误进行比较,以找出您犯的错误。
答案 1 :(得分:-1)
如果if条件,则不需要elasticSearch
。此外,您需要遍历数组的整个长度