, поэтому я новичок в кодировании, и я использую Drjava.
Я получил задание от своего класса, чтобы попросить пользователя ввести целые числа в два массива (пользователь должен вводить целые числа от наименьшего до самого большого в каждом массиве).
Затем мне нужно объединить оба массива и заказать новый массив от наименьшего до самого большого.
Я думаю, что я понял, как это сделать, и он будет скомпилирован просто отлично, но он продолжал говорить, что после исключения кода было введено исключение OutOfBoundsException и введены некоторые числа.Почему он продолжает говорить «ArrayIndexOutOfBoundsException» в моем коде?
Почему он продолжает это делать и как его исправить?
Спасибо.
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[] array1= new int[10000];
int x=0;
int x1=0;
int v=1;
for(int where=1; x>=0; where++) {
x= scan.nextInt();
array1[where]=x;
x1++;
if((array1[where]<array1[where-1])&&(x>=0)){
System.out.println("ERROR: Array not in correct order");
x=-326;}
}
System.out.println("Enter the values for the second array, up to 10000 values, enter a negative number to quit");
int[] array2= new int[10000];
int y=0;
int y1=0;
int w=1;
for(int wher=1; y>=0; wher++) {
y= scan.nextInt();
array2[wher]=y;
y1++;
if((array2[wher]<array2[wher-1])&&(y>=0)){
System.out.println("ERROR: Array not in correct order");
y=-326;}
}
if(x!=-326) {
System.out.println("First Array: ");
int where=x1;
for(v=1; v<(where); v++) {
System.out.println(array1[v]); }}
if(y!=-326) {
System.out.println("Second Array: ");
int wher=y1;
for(w=1; w<(wher); w++) {
System.out.println(array2[w]); }}
int[] array3= new int[v+w];
int a=0;
int b=0;
while((a+b)<(v+w-3)) {
while(array1[v-a]>array2[w-b]) {
array3[w+v-a-b]=array1[v-a];
a++;}
while(array2[w-b]>=array1[v-a]) {
array3[v+w-a-b]=array2[w-b];
b++;}
}
if((y!=-326) && (x!=-326)) {
System.out.println("Merged Array: ");
int c=0;
while((v+w-c)>=2){
System.out.println(array3[v+w-c]);
c++; }
}
}
}
вы должны использовать более простые переменные. Я видел, что кто-то использует «где» в качестве целочисленной переменной внутри цикла for в первый раз: -P –
FYI, если вы используете соответствующий тег языка (т.е. [tag: java]), блок кода выделит ваш синтаксис. – thegrinner
Одна вещь, о которой вы можете подумать, - это именовать переменные чем-то логичным. Последнее, что я проверил - одна буква не является большим именем переменной, если только вы не написали алгоритм алгебры ... –