这是大学的运动训练。该程序是关于计算/读取纸张上的方格数(其大小由用户给出),方块由'#'表示。而且空的空间是'。'。
public class Quadrado {
public static void main(String[] args){
int flag=0, l=0, c=0;
String bla;
Scanner in = new Scanner(System.in);
flag = in.nextInt();
l = in.nextInt();
c = in.nextInt();
char [][] folha = new char[l][c];
while(in.hasNext()==true){
for (int i=0; i<l; i++){
for (int x=0; x<c; x++){
bla = in.nextLine();
folha[i][x] = bla.charAt(x);
}
}
}
if(flag==1){
contador(folha,in);
}
}
public static void contador(char[][] folha, Scanner in){
int conta=0, l=0, c=0;
for (int i=0; i<l; i++){
for (int x=0; x<c; x++){
if (folha[i][x]=='#'){
conta++;
}
}
}
System.out.print(conta);
}
}
所以eclipse在folha[i][x] = bla.charAt(x)
给了我错误,起初我有这样的错误:folha[i][x] = in.next().charAt(x)
,但它给出了一个我不记得的错误,所以我的朋友说像现在这样使用对象,但它仍然出错。当你执行它时,它允许你插入标志和工作表的大小,但是一旦你完成插入第一行ex:###
它就会给我:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0 at java.lang.String.charAt(Unknown Source) at Quadrado.main(Quadrado.java:21)
在调用方法时也给了我一个错误,eclipse建议的解决方案是创建相同的方法。
希望你们能在这里指导我。
答案 0 :(得分:0)
当StringIndexOutOfBoundsException
小于bla.length()
的值时,您将获得c
。
因为你的这一行错了
folha[i][x] = bla.charAt(x);
您应该在此行前检查x< bla.length()
。