阵列index超出原设定值
时间:2011-11-01
来源:互联网
public class hw2{
public static void main(String args[]){
System.out.println("欢迎光临");
String check;
System.out.println("请输入帐目类别名称,不同项目中间以空格隔开");
check=ConsoleIn.readLine();/*check是帐目类别名称*/
int space_num=count_space(check);/*space_num是空格数目,space_num+1即是帐目类别个数*/
String checkarray[][]=new String[1001][space_num+2];
for(int i=1;i<=1000;i++){
for(int j=1;j<=space_num+1;j++){
checkarray[i][j]="0";
}
}
int counter[]=new int[space_num+2];/*只是计数用,之后就用不到了*/
for(int coun=1;coun<=space_num+1;coun++){
if(coun==1){
counter[1]=check.indexOf(" ",0);
if(counter[1]==-1){
checkarray[1].equals(check);
break;
}
checkarray[1][1]=check.substring(0,counter[1]);
continue;
}
counter[coun]=check.indexOf(" ",counter[coun-1]+1);
if(counter[coun]==-1){
checkarray[1][coun]=check.substring(counter[coun-1]+1);
break;
}
checkarray[1][coun]=check.substring(counter[coun-1]+1,counter[coun]);
}
int d[]=new int[space_num+2];/*列*/
String ins;/*指令*/
while(true){
System.out.println("请输入指令");
ins=ConsoleIn.readLine();
for(int coun=1;coun<=space_num+1;coun++){
d[coun]=2;
}
40if(ins.substring(0,3).equals("add")){/*项目名称a数量b单价c帐目名称*/
41int a=ins.indexOf(" ",4);
42int b=ins.indexOf(" ",a+1);
43int c=ins.indexOf(" ",b+1);
44for(int coun=1;coun<=space_num+1;coun++){
45while(ins.substring(c+1).equals(checkarray[1][coun])){
46checkarray[d[coun]][coun]=ins.substring(4,a);/*项目名称*/
47checkarray[d[coun]+1][coun]=ins.substring(a+1,b);/*数量*/
48checkarray[d[coun]+2][coun]=ins.substring(b+1,c);/*单价*/
49int num=Integer.parseInt(checkarray[d[coun]+1][coun]);
50int price=Integer.parseInt(checkarray[d[coun]+2][coun]);
51int numxprice=num*price;
52checkarray[d[coun]+3][coun]="" + numxprice;
d[coun]=d[coun]+4;
}
}
}
else if(ins.substring(0,4).equals("list")){
for(int coun=1;coun<=space_num+1;coun++){/*coun表示行*/
while(ins.substring(5).equals(checkarray[1][coun])){
System.out.println(checkarray[1][coun]+"\t");
for(int i=2;i<=d[coun];i++){/*i是表示列*/
if(i%4==2){
System.out.println("项目名称"+checkarray[i]);
}
if(i%4==3){
System.out.println("数量"+checkarray[i]);
}
if(i%4==0){
System.out.println("单价"+checkarray[i]);
}
if(i%4==1){
System.out.println("小计"+checkarray[i]);
}
}
}
}
}
else if(ins.equals("list all")){
for(int row=1;row<=10;row++){
for(int column=1;column<=space_num+1;column++){
if(!checkarray[row][column].equals("0")){
System.out.print(checkarray[row][column]+" ");
}
}
System.out.print("\n");
}
}
else if(ins.equals("leave")){
System.out.print("感谢您");
return;
}
}
}
static int count_space(String check){
int num_of_space=0;
int start=0;
while(true){
int a=check.indexOf(" ",start);
if(a==-1){
break;
}
start=a+1;
num_of_space++;
}
return num_of_space;
}
}
这个程式我先输入a b c,按enter接著输入add d 3 6 a,按enter系统跑出:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:1001 at hw2.main(hw2.java:52)
我的阵列设的够大阿,怎么会这样?
第52行附近我已标行数
作者: b1992810129 发布时间: 2011-11-01
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:1001 at hw2.main(hw2.java:52)
看一下Exception的内容,应该很容易发现错误在那
看一下Exception的内容,应该很容易发现错误在那
作者: didahsu 发布时间: 2011-11-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28