奇怪的索引超出范围错误

时间:2016-04-17 20:24:57

标签: java indexoutofboundsexception

我正在做我的AP计算机科学作业,我遇到了一个奇怪的索引出界错误:

java.lang.ArrayIndexOutOfBoundsException: 3
at Main.main(T1_L28_Template.java:68)

以下是问题:

  

在本实验中,您将创建一个程序,该程序合并两个非负(等于或大于0)整数数组。您的程序将接受每个数组作为键盘的输入。您不知道将输入多少个值,但您可以假设每个阵列的最大长度为10,000个元素。要停止输入值,请输入负数。您可以忽略任何负数输入,而不是将它们存储在数组中。

     

两个输入数组的元素应按递增顺序排列。换句话说,每个数组元素必须具有大于或等于前一个元素值的值。数组可能包含重复的元素。

     

输入两个数组后,程序必须检查以确保按顺序输入每个数组的元素。如果找到乱序元素,则打印消息“错误:数组不正确顺序”。

     

您的任务是将两个输入数组合并为一个新数组,所有元素按顺序排列,从最低到最高。打印输入的每个原始数组,然后打印合并的数组。   请注意,您的程序必须输出每个数字之间只有一个空格的数组。

Sample Run 1:
Enter the values for the first array, up to 10000 values, enter a negative number to quit
3
3
5
6
8
9
-1

Enter the values for the second array, up to 10000 values, enter a negative number to quit
3
4
5
6
-5

First Array: 
3 3 5 6 8 9 

Second Array: 
3 4 5 6 

Merged Array:
3 3 3 4 5 5 6 6 8 9
Sample Run 2:
Enter the values for the first array, up to 10000 values, enter a negative number to quit
4
5
7
2
-1

Enter the values for the second array, up to 10000 values, enter a negative number to quit
3
3
3
3
3
3
-100


First Array: 
4 5 7 2 

Second Array: 
3 3 3 3 3 3 

ERROR: Array not in correct order

这是我的代码:

import java.io.*;
import static java.lang.System.*;
import java.util.Scanner;
import java.lang.Math;

class Main{
     public static void main (String str[]) throws IOException {
       Scanner scan = new Scanner(System.in);

       System.out.println("Enter the values for the first array, up to 10000 values, enter a negative number to quit");
       int first[] = new int[10000];
       int inttt=0;
       int intt=0;

       for(int i=0; i<first.length; i++)
       {
         first [i] = scan.nextInt();
         inttt++; 
         if(first[i]<0)
         {
         break;
         }  
       }

       System.out.println("Enter the values for the second array, up to 10000 values, enter a negative number to quit");
       int second[] = new int[10000];
       for(int i=0; i<second.length; i++)
       {
         second [i] = scan.nextInt();
         intt++;
         if(second[i]<0)
         {
           break;
         }
       }

       int mergeone[]=new int[inttt-1];
       for(int i=0; i<mergeone.length;i++)
         mergeone[i]=first[i];
       int mergetwo[]=new int[intt-1];
       for(int i=0; i<mergetwo.length;i++)
         mergetwo[i]=second[i];

       System.out.print("First Array:");
       for(int i=0; i<mergeone.length; i++)
         System.out.print(" "+mergeone[i]);

       System.out.println(" ");
       System.out.print("Second Array:");
       for(int i=0; i<mergetwo.length; i++)
         System.out.print(" "+mergetwo[i]);

       int lengthone = mergeone.length;
       int lengthtwo = mergetwo.length;

       int mi;
       int t=Integer.MAX_VALUE;

       int mix[] = new int[lengthone+lengthtwo];
       for(int i=0;i<mix.length;i++)
       {
        mix[i]=mergeone[i];
        mix[(i+lengthone)]=mergetwo[i];
        if (mix [i]< t)
            t = mix[i];
       }

       for(int i=mix.length-1;i>=0;i--)
       {  
       if(mergeone[i-1]>mergeone[i] || mergetwo[i-1]>mergetwo[i])
          {
           System.out.println("ERROR: Array not in correct order");
          }

       else
         {
          mix [0] = t;
          if(mix[i]<mix[i-1])
          {
            mi = mix[i];
            mix[i]=mix[i-1];
            mix[i-1]= mi;
          } 
           System.out.print("Merged Array:");
           for(int in=0; in<mix.length;in++)
           System.out.print(" "+mix[in]);   
         }
       } 
     }
}

0 个答案:

没有答案