使用数组无法访问的代码,无法找出原因

时间:2018-04-18 13:57:13

标签: java arrays bubble-sort unreachable-code

所以我正在使用Bubble Sort在Arrays上为我的计算机编程课做一个实验。无论如何代码已经完成并且应该可以工作但是有一部分是出现了“无法访问的代码”的错误。而且我不知道为什么。我在这里看不到问题。这是完整的代码,因此您可以确定问题。

public class MClab22
{
  public static void main(String[] args)
  {
    int[] houseNums = {23, 76, 15, 47, 14, 38, 52};
    System.out.print("The original sequence is: \n     ");
    for (int i = 0; 1 < houseNums.length; i++)
    {
      System.out.print(houseNums [i] + ", ");
    }
    System.out.println();
    SortEm(houseNums);
  }
  private static void SortEm (int [] ar)
  {
    int temp;
    for (int i = ar.length - 1; 1 > 0; i--)
    {
      for (int j = 0; j < i; j++)
      {
        if (ar[j] > ar[j + 1])
        {
          temp = ar[j];
          ar[j] = ar[j + 1];
          ar[j+1] = temp;
        }
      }
    }
    System.out.print("The new sequence is : \n   ");
    for (int i=0; 1 < ar.length; i++)
    {
      System.out.print (ar[i] + ", ");
    }
    System.out.println();
  }
}

“无法访问的代码”问题&#39;发生在第29行,是&#34; System.out.print(&#34;新序列是:\ n&#34;);&#34; 如果可以,请帮忙,非常感谢提前:))

3 个答案:

答案 0 :(得分:1)

尝试这样:

public class MClab22{

      public static void main(String[] args)
      {
        int[] houseNums = {23, 76, 15, 47, 14, 38, 52};
        System.out.print("The original sequence is: \n     ");
        for (int i = 0;i < houseNums.length; i++)
        {
          System.out.print(houseNums [i] + ", ");
        }
        System.out.println();
        SortEm(houseNums);
      }
      private static void SortEm (int [] ar)
      {
        int temp;
        for (int i = ar.length - 1; i > 0; i--)
        {
          for (int j = 0; j < i; j++)
          {
            if (ar[j] > ar[j + 1])
            {
              temp = ar[j];
              ar[j] = ar[j + 1];
              ar[j+1] = temp;
            }
          }
        }

        System.out.print("The new sequence is : \n   ");
        for (int i=0; i < ar.length; i++)
        {
          System.out.print (ar[i] + ", ");
        }
        System.out.println();
      }

}

实际上有3个问题。第一个问题是条件1> 0的循环。这个总是如此。另外两个问题是你有条件1 <1的循环。 ar.length也是无限的

答案 1 :(得分:1)

来自Wikipedia

  

在计算机编程中,无法访问的代码是源代码的一部分   由于不存在而永远无法执行的程序   从程序的其余部分控制代码的流程路径。

这部分导致问题:

for (int i = ar.length - 1; 1 > 0; i--)

特别是:

1 > 0

因为它总是如此,你有一个无限循环,执行永远不会到达:

System.out.print("The new sequence is : \n   "); 

答案 2 :(得分:1)

我认为你的意思是

for (int i = ar.length - 1; i > 0; i--)

而不是

for (int i = ar.length - 1; 1 > 0; i--)