谁能告诉我为什么在下面的Java代码中显示ArrayOutOfIndex:3吗?

问题描述 投票:-1回答:1

这是代码,

 public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int k=0,flag=0;
        int testCases= sc.nextInt();
        int rows = sc.nextInt();
        int coloumns = sc.nextInt();
        char[][] array= new char[rows][coloumns];
        String[] s1 = new String[rows];
        String abc = sc.nextLine();

        for(int i=0;i<rows;i++)
        {
            s1[i]=sc.nextLine();

        }
        for(int i=0;i<rows;i++){

            char[] rowArray=s1[i].toCharArray();

            for(int j=0;j<coloumns;j++)
            {
                 array[i][j]=rowArray[k];
                 k++;
            }
        }

提供的输入是:1

3 3

aba

xyz

pdb

//然后显示异常

线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:3

在Trail.possible_String.main(possible_String.java:30)

C:\ Users \ DuckyMater \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor-snippets \ run.xml:53:Java返回:1

BUILD FAILED(总时间:17秒)

java exception indexoutofboundsexception
1个回答
0
投票

因为您没有重置变量k的值。它超出了2,这就是为什么要获取ArrayIndexOutOfBoundsException

尝试以下修改:

 for (int i = 0; i < rows; i++, k=0) {

  char[] rowArray = s1[i].toCharArray();

  for (int j = 0; j < coloumns; j++) {
    array[i][j] = rowArray[k];
    k++;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.