java - 为什么 for 循环被跳过?

标签 java

我想按特定顺序(从最小到最大)将产品添加到数组中,但由于某种原因,代码跳过了执行移位部分的 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/

相关文章:

java - 无需路由器的 WiFi 网络

java - Eclipse Java 调试器不会进入 lambda 或方法引用

java - 如何创建具有两个键(键对、值)的 HashMap?

java - 如何在 Swing 中创建单独的屏幕?

java - 使用 Java 在 Selenium WebDriver 中进行图像比较

java - 在Java中对一个大文件进行排序

java - 使用 Apache Commons Configuration 将用户输入的路径传递到 .properties 文件中

java - 如何在 Hadoop 流中将不可打印指定为键值分隔符

java - 是什么原因导致 "Can' t find Symbol”以及如何解决?

java - 如何在圆圈中导航