作者ogamenewbie (._.)
看板java
标题Re: [问题] ArrayIndexOutOfBoundsException: 1
时间Tue Nov 17 15:45:31 2009
※ 引述《PensiveMoon (浅色的那条)》之铭言:
: 这个问题困扰我好久,
: 我也不知道为什麽可以编译,可是却无法执行,
: 执行之後都会告诉我
: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
请找翻译机翻译整句话, 并且 想一下为什麽是 1
: //impor一些packge可以用
impor 是什麽?
: public class ArrayTest{
: public void loadFile(String inputName){
: //读一个档案,由下面的main呼叫
这样的注解不太好, 一般希望解释
如果有传入的变数的话, 它是干麻的,
如果有传回的变数的话, 它是干麻的,
整个 method 在干麻.
简单来说, API 文件写啥你就学着写就是了.
位置通常也是放在 loadFile 前面
格式请自己再去查读相关资料
: try{
: FileInputStream fs = new FileInputStream(inputName);
: InputStreamReader input = new InputStreamReader(fs);
: BufferedReader bu = new BufferedReader(input);
: //这里是一些读档的操作
这边太常见所以我就不讲你注解了
你变数命名规则有没有一致性?
fs 是 FileInputStream 抓头尾单字的头
^ ^
input 是 InputStreamReader 的第一段
^^^^^
bu 是 BufferedReader 的第一段的头两个字
^^
这样你以後变数量假设到五百个的话,
你有办法快速回想起哪个短名是做什麽鬼事情用的嘛?
: String line;
: String name[]={"0"};
: int amount[][] = new int[10][12];
: int i=0;
: int j;
: //宣告应该要有的阵列之类的
这边的变数都需要详细解释
例如说 name 为啥要预设宣告为一个 [1] 的 array
它的作用是啥... etc
一般对 method 是不用这样作
不过你要问的就是这个 method
所以给我好好比照一般 class API 文件的 Field Summary 写清楚
: while((line = bu.readLine()) != null){
: String tokens[] = line.split(" ");
: name[i] = tokens[0];
: for(j=0;j<12;j++)
: {
: amount[i][j] = Integer.parseInt(tokens[j+1]);
像这边你要做一件事情, 你这个 for 会跑 12 次对吧
请用纸笔列出十二行 [] 里面的数字
这边请假设 i 不变都是 0
所以第一行是 0 0 1
以下类推, 并请解释第十二行能否执行? 为什麽?
: //出现错误的行数
: }
: i++;
这边要作跟前面一样的事情, 只是 i 会变了,
这次 j 你可以假设就是 0 没关系.
一样用纸笔从第一行读取以後 i 是 0 开始列
所以 第一行是 0 0 1
请解释假设档案写错读到第 11 行的时候会发生什麽事情?
以及 i >= 1 的时候, name 这个 [0] 的 array 会发生什麽事情?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.34.62
1F:推 PensiveMoon:哈,谢谢,基本上因为这个程式写的有点急 11/17 17:20
2F:推 PensiveMoon:的确有点变数方面定义名称写得很糟糕,不过後来我已经 11/17 17:21
3F:推 PensiveMoon:找出错误了,因为传入档案中间间格式用tab不是" "所以 11/17 17:21
4F:推 PensiveMoon:所以才会无法读,关於读行数的方面是我设定错了。谢谢 11/17 17:22