JAVA无限输入

时间:2017-06-11 01:43:23

标签: java

我编写了一个程序来输入两个10个元素的数组,将它们合并到另一个数组中,删除重复的元素。在接受输入时,输入过程不会以arr2的10个元素结束,而是直接进行。

import java.util.*;
class ReDep
{ 
 public static void main()
 {
    Scanner sc=new Scanner(System.in);
    System.out.println("Enter the values of arr1");
    int arr1[]=new int[10];
    int arr2[]=new int[10];
    int arr3[]=new int[20];
    int i,j,k,l,g,h,n,c,d,size,f;

    for(i=0;i<10;i++)
    {
        arr1[i]=sc.nextInt();

    }
    System.out.println("Enter the values of arr2" );
    for(f=0;f<10;f++)
    {

        arr2[f]=sc.nextInt();
    }
    System.out.println();

    for(j=0;j<10;j++)
    {
        arr3[j]=arr1[j];
        arr3[j+10]=arr3[j];
    }
    for(k=0;k<19;k++)
    {
        for(l=0;l<=19-(k+1);l++)
        {
            if(arr3[l]>=arr3[l+1])
            {
                c=arr3[l];
                arr3[l]=arr3[l+1];
                arr3[l+1]=c;
            }
        }}
    size=19;
    for(g=0;g<size;g++)
    {
        if(arr3[g]==arr3[g+1])
        {
            n=g+1;
            while(n<=size)
            {
                arr3[n]=arr3[n+1];
            }
            size--;
        }
    }
    for(d=0;d<20;d++)
    {
        System.out.println(arr3[d]);
    }
 }
}

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:1)

当你没有增加n或递减大小时,你有一个无限:

while(n<=size)
{
    arr3[n]=arr3[n+1];
}

你必须增加它:)

while(n<=size)
{
    arr3[n]=arr3[n+1];
    n++; // or size--;
}

答案 1 :(得分:0)

for(j=0;j<10;j++)
{
    arr3[j]=arr1[j];
    //change arr3[j] to arr2[j]
    arr3[j+10]=arr2[j];
}

修复主要方法的签名。