【问题标题】:out of bounds error while checking the dulipate element in array [duplicate]检查数组中的重复元素时出现越界错误[重复]
【发布时间】:2019-07-17 23:22:53
【问题描述】:

我收到 OutofBounds 错误。 越界发生在这里“if (arr[j]==arr[i])” 该程序是找到重复的数字并将它们设为0。 并将所有重复的数字向左移动。

input: {10,20,4,20,5}
output:{0,0,10,4,5}

代码:

import java.util.*;
class ArrayWork
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        int arr[],n,i,j,nr=1;
        System.out.println("Enter the value for n: ");
        n = sc.nextInt();
        if(n>25)
            System.out.println("Invalid input");
        else
        {
            arr = new int[n]; 
            System.out.println("Enter the array elements: ");
            for(i=0;i<n;i++)
            {
                arr[i] = sc.nextInt();
            }
            for ( i = 0; i < arr.length; i++) {
     for (j = i + 1 ; j < arr.length; j++) {
          if (arr[j]==arr[i])
          nr=arr[i];

            for(i=0;i<n;i++)
            {
                if(arr[i]==nr)
                {
                    for(j=i-1;j>=0&&arr[j]>0;j--)
                    {
                        arr[j+1]=arr[j];
                    }
                    arr[j+1]=0;
                }
            }

            System.out.println("The array is: ");
            for(i=0;i<n;i++)
            {
                System.out.print(arr[i] + " ");
            }
        }
    }
}
}}

【问题讨论】:

  • 四个嵌套的for循环?我觉得这很可疑。
  • 我不是编程专家。

标签: java arrays bluej


【解决方案1】:

那是因为 j = i + 1。 可能您应该将 for 循环更改为:

for ( i = 0; i < arr.length; i++) {
     for (j = i + 1 ; j < arr.length - 1; j++) {

但不管怎样,你的代码看起来不太好。

编辑:您将在接下来的三个 for 循环中更改 i 和 j 的值。您真的应该重新考虑该代码。但至少在每个 for 循环中使用一个新变量,即 k、l、m

【讨论】:

  • 好的,我会去做并检查
  • 同样的错误来了
【解决方案2】:

问题是当i=arr.length-1j=arr.length 和 j 超出范围时。因此 arr[j] 抛出错误。将其更改为i &lt; arr.length - 1

【讨论】:

  • 我仍然得到 "for (i = 0; i
  • @ChildhoodToons 我不完全确定,但我认为这是因为内部循环改变了 i 的值。第三个嵌套循环和数组打印循环使用 i。尝试在那里使用不同的变量。
猜你喜欢
  • 2016-02-17
  • 2014-11-16
  • 2015-06-13
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
相关资源
最近更新 更多