为什么我在复制和粘贴输入时得到StringIndexOutofBoundsException?

jslywgbw  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(445)

我确定缓冲区是完全空的。它只有在我手动输入时才起作用。
如果我复制并粘贴输入,我必须按一个额外的“回车”键,这可能是导致异常的罪魁祸首: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0 我的问题本质上是:为什么只有在复制和粘贴输入时才会发生这种情况,以及如何更正它?

public class Skener {

public static void main(String[] args) 
{
    //Creating scanner and associated input variables
    Scanner scan= new Scanner(System.in);
    int r,zr,c,zc;

    //Reading input variables
    r=scan.nextInt();
    c=scan.nextInt();
    zr=scan.nextInt();
    zc=scan.nextInt();

    scan.nextLine();//cleaning up buffer

    char[][] matrix= {};

    matrix=read2DArray(r, c, matrix); <--Error happens in this method
    .....
}

public static char[][] read2DArray(int r,int c,char[][] twoD_array)
{
    Scanner scan= new Scanner(System.in);

    int row,col;
    String input;
    twoD_array=new char[r][c];

    for(row=0;row<=r-1;row++)
    {   
        input=scan.nextLine();
        for(col=0;col<=c-1;col++)
        {

            twoD_array[row][col]=input.charAt(col); <-- Error occurs at this line
        }

    }

    return twoD_array;
}

以下是输入示例:

3 3 1 2
.x.
x.x
.x.

以及相应的样本输出:

..xx..
xx..xx
..xx..

编辑:
输入崩溃,如上面给定的示例输入。的价值 col 崩溃时为0。

gfttwv5a

gfttwv5a1#

因为你复制的额外字符而你没有注意到
请参见:
复制图像时,请注意额外的字符

相关问题