class SafeArray
{
private int[] arr;
public SafeArray()
{
arr=new int[10];
}
public SafeArray(int length)
{
arr=new int[length];
}
public int getLength()
{
return arr.length;
}
public void setArray(int i,int index)
{
if(index>arr.length||index<0)
{
System.err.print("索引错误!");
return;
}
else
arr[index]=i;
}
public int getArray(int index)
{
if(index>=arr.length||index<0)
{
System.err.print("索引错误!");
return 0;
}
else
return arr[index];
}
public void ShowAll()
{
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
}
}public class UseConstructor
{
public static void main(String[] args)
{
SafeArray arr1=new SafeArray();
SafeArray arr2=new SafeArray(20);
for(int i=0;i<arr1.getLength();i++)
{
arr1.setArray((i+1)*10,i);
}
System.out.print("arr1: ");
arr1.ShowAll();
System.out.println("");
for(int i=0;i<arr2.getLength();i++)
{
arr2.setArray((i+1)*10,i);
}
System.out.print("arr2: ");
arr2.ShowAll();
System.out.println("");
System.out.println("索引21的数字是: "+arr2.getArray(21));
}
}
运行后显示"索引错误!索引21的的数字是0" 但是getArray里不加return 0;编译不通过 有没有什么办法?
{
private int[] arr;
public SafeArray()
{
arr=new int[10];
}
public SafeArray(int length)
{
arr=new int[length];
}
public int getLength()
{
return arr.length;
}
public void setArray(int i,int index)
{
if(index>arr.length||index<0)
{
System.err.print("索引错误!");
return;
}
else
arr[index]=i;
}
public int getArray(int index)
{
if(index>=arr.length||index<0)
{
System.err.print("索引错误!");
return 0;
}
else
return arr[index];
}
public void ShowAll()
{
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
}
}public class UseConstructor
{
public static void main(String[] args)
{
SafeArray arr1=new SafeArray();
SafeArray arr2=new SafeArray(20);
for(int i=0;i<arr1.getLength();i++)
{
arr1.setArray((i+1)*10,i);
}
System.out.print("arr1: ");
arr1.ShowAll();
System.out.println("");
for(int i=0;i<arr2.getLength();i++)
{
arr2.setArray((i+1)*10,i);
}
System.out.print("arr2: ");
arr2.ShowAll();
System.out.println("");
System.out.println("索引21的数字是: "+arr2.getArray(21));
}
}
运行后显示"索引错误!索引21的的数字是0" 但是getArray里不加return 0;编译不通过 有没有什么办法?
至于说的不想返回值的话就将方法int改为void,这样就不需要返回值了。
1 数组是从0开始的 所以没有21(数组越界)只有0到20
2 不想return(返回)把 public int getArray(int index) 中的int改为void
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + arr.length);
谢谢3楼的 不过我还没学到丢出例外...