有人可以告诉我为什么我的代码中出现java.lang.ArrayIndexOutOfBoundsException错误吗?[已结束]

Can someone tell me why am I getting java.lang.ArrayIndexOutOfBoundsException error in my code? [closed]

提问人:Janu 提问时间:1/15/2021 最后编辑:Sumit SinghJanu 更新时间:1/16/2021 访问量:59

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。

2年前关闭。

我正在开发一个 Java 程序来遍历两个数组,并将第一个数组与第二个数组进行比较以进行任何匹配。它应该将所有不匹配的数字/字符串作为数组列表返回。我完成了,但我不确定为什么我收到错误。这是我的代码:ArrayIndexOutOfBoundsException

package test;

import java.awt.List;
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class ArrayComparer {
    public static ArrayList<String> ArrayComparer(String[] arrayOne, String[] arrayTwo){
//      if one is bigger than start by comparing the smaller one to the bigger one
//      as if it were the other way the bigger one would run out over numbers to compare
        
//      declaring the array for holding all the non-matching telephone numbers to be returned
         ArrayList<String> nonMatchingTelephoneNumbers = new ArrayList<String>();

        for(int i = 0; i<arrayOne.length; i++){
            int strikes = 0;
//          for each value of the first one it should go through all the values of the second and compare each
            for(int i2 = 0; i<arrayTwo.length; i2++){
                if(arrayOne[i] != arrayTwo[i2]){
                    strikes++;
                    if(strikes == arrayTwo.length){
//                      meaning it has gone through ALL of arrayTwo and couldn't find a match
                        nonMatchingTelephoneNumbers.add(arrayOne[i]);
                    }
                }
            }
                
        }
        return nonMatchingTelephoneNumbers;
        
        
    }
    public static void main(String[] args) throws IOException {
//          declaring the first list of telephone number
        String[] ArrayListOne;
//          declaring the second list of telephone numbers
        String[] ArrayListTwo;
//      splitting up the user input of telephone numbers by commas
        
        Scanner myObj = new Scanner(System.in);  // Create a Scanner object
        System.out.println("Enter your first array of telephone numbers, split by commas");
        
        ArrayListOne = myObj.nextLine().split(",");  // Read user input
        
     
//      once it has iterated through all of the telephone numbers in the first list, ask for the second list
        Scanner myObj2 = new Scanner(System.in);  // Create a Scanner object
        System.out.println("Enter your second array of telephone numbers, split by commas");
        
        ArrayListTwo = myObj2.nextLine().split(",");  // Read the second user input

//      once it has collected and sorted all the user input, the ArrayCOmparer method should be called 
//      to compare them and return the telephone numbers that DON'T MATCH
        
        ArrayComparer(ArrayListOne, ArrayListTwo);
        
    }

}

错误在第 22 行,上面写着 .在我运行它之前,它也不会说第 22 行有错误。有人可以告诉我为什么我收到这个:控制台错误吗?if(arrayOne[i] != arrayTwo[i2]){

Java 循环 ioexception 线程异常

评论

0赞 Jordan Schnur 1/15/2021
你为什么不在这里发布相关代码,以便人们可以为您提供帮助。没有人愿意采取额外的步骤来使用Google云端硬盘。
0赞 Janu 1/16/2021
哦,好吧,对不起,我会的

答:

0赞 Donato Amasa 1/15/2021 #1

嗨,我认为这是导致错误的原因

        for(int i2 = 0; i<arrayTwo.length; i2++){

您应该将其替换为:

        for(int i2 = 0; i2<arrayTwo.length; i2++){

评论

0赞 Janu 1/16/2021
是的,这在我看来是一个愚蠢的错误!谢谢!