我想按特定顺序(从最小到最大)将产品添加到数组中,但由于某种原因,代码跳过了执行移位部分的 for 循环。我尝试设置条件“products.length-2 ”,但它仍然不起作用。
if(products!=null){
for(int i=0; i<products.length; i++){
if(products[i]!=null && product.getItemNum() < products[i].getItemNum()){
index=i;
temp = products[index];
for(int j=products.length-1; j<=0; j--){
products[j+1]= products[j];
}
products[index]= product;
}
}
}
最佳答案
让我们考虑一下您的 products
数组包含 2 个元素。
内层第一次迭代for
循环:
for(int j=products.length-1; j<=0; j--){
将评估为:
for(int j = (2) - 1; j<=0; j--){
正如您所看到的,您的终止条件是问题的根源。
因为你是倒数的,所以它应该是 j >= 0
,不是j <= 0
:
for(int j=products.length-1; j >= 0; j--){ // j >= 0
products[j+1]= products[j];
}
关于java - 为什么 for 循环被跳过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35239684/