int i = c.size(); 这里有问题。ArrayList的最大下标也是size()-1,你从size()开始当然会有ArrayIndexOutOfBoundsException。把它改成int i = c.size()-1;
int i = c.size();
这里出错了 应该是 int i = c.size()-1;
import java.util.ArrayList;
public class Test03 {
public static void toBinary(int a){
try{
ArrayList c = new ArrayList();
while(a>0){
c.add(a%2);
a /=2;
}
int i = c.size()-1;
while(i>=0){
System.out.println(c.get(i));
i--;
}
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("数组下标越界");
}
catch(NullPointerException e){
System.out.println("空指针错");
}
catch(IndexOutOfBoundsException e){
System.out.println("List下标越界");
}
}
public static void main(String[] args) {
int a = 100;
System.out.println();
toBinary(100);
}
修改后的程序如下:
import java.util.ArrayList;
public class Test03 {
public static void toBinary(int a) {
ArrayList c = new ArrayList();
while (a > 0) {
c.add(a % 2);
a /= 2;
}
int i = c.size() - 1;
while (i >= 0) {
System.out.print(c.get(i));
i--;
}
}
public static void main(String[] args) {
int a = 100;
System.out.print(a + "的二进制表现形式:");
toBinary(100);
}
}
说明:
1、原先程序的错误就在List下标越界,它的长度是c.size();但是它的最后一个值的索引时c.size()-1,只要改一下即可。
2、这个try-catch语句是用来捕捉异常的,现在既然没有异常,你大可以把它去掉,这样程序看上去更简洁。
3、想到用ArrayList来保存某个整数的二进制数,的确是个好办法!
对啊应该用c.size()-1
的确,楼主的想法不错,学习了