二維陣列空指標,列印楊輝三角
阿新 • • 發佈:2018-12-15
需求:輸出楊輝三角
錯誤程式碼:
報錯:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0import java.util.Scanner; class arraydemo3{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("請輸入你要列印的楊輝三角形的行數"); int h = sc.nextInt(); int[][] arr=new int[h][]; arr[0][0]=1; for(int x=1;x<h;x++){ for(int y=0;y<=x;y++){ if(y==0||y==x){ arr[x][y]=1; }else{ arr[x][y]=arr[x-1][y-1]+arr[x-1][y]; } } } for(int x=0;x<arr.length;x++){ for(int y=0;y<arr[x].length;y++){ System.out.print(arr[x][y]+" "); } System.out.println(); } } }
at arraydemo3.main(arraydemo3.java:13) 空指標
分析:對二維陣列只new了一部分,二維陣列元素中的陣列沒有new.堆中沒有分配記憶體。
正確程式碼:
加了一段:import java.util.Scanner; class arraydemo3{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("請輸入你要列印的楊輝三角形的行數"); int h = sc.nextInt(); int[][] arr=new int[h][]; for(int x=1;x<=h;x++){ arr[x-1]=new int[x]; } arr[0][0]=1; for(int x=1;x<h;x++){ for(int y=0;y<=x;y++){ if(y==0||y==x){ arr[x][y]=1; }else{ arr[x][y]=arr[x-1][y-1]+arr[x-1][y]; } } } for(int x=0;x<arr.length;x++){ for(int y=0;y<arr[x].length;y++){ System.out.print(arr[x][y]+" "); } System.out.println(); } } }
for(int x=1;x<=h;x++){
arr[x-1]=new int[x];
}
for(int x=1;x<=h;x++){
arr[x-1]=new int[x];
}
for(int x=1;x<=h;x++){
arr[x-1]=new int[x];
}
for(int x=1;x<=h;x++){
arr[x-1]=new int[x];
}