我确定缓冲区是完全空的。它只有在我手动输入时才起作用。
如果我复制并粘贴输入,我必须按一个额外的“回车”键,这可能是导致异常的罪魁祸首: 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。
1条答案
按热度按时间gfttwv5a1#
因为你复制的额外字符而你没有注意到
请参见:
复制图像时,请注意额外的字符