黑马程序员技术交流社区

标题: 键入二维数组NullPointerException [打印本页]

作者: JoAndroid    时间: 2016-8-20 23:02
标题: 键入二维数组NullPointerException
/*
1.分析以下需求,并用代码实现:
        (1)定义一个int类型的二维数组
        (2)获取该二维数组最小元素,并输出
*/

import java.util.Scanner;
class Job_01s {
        public static void main(String[] args) {
                int [][] arr = new int[3][];
                //System.out.println(arr);      
                //System.out.println(arr[0]);   
                //System.out.println(arr[0][0]);
                int[][] arr1 = getArray();       
                printArr(arr1);
                System.out.println("最小元素"+getMin(arr1));
        }

        //键入数组
        public static int[][] getArray() {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入二维数组中一维数组的个数:");
                int length1 = sc.nextInt();
                int arr[][] = new int [length1][];
                for (int i = 0;i < length1 ;i++ ) {
                        System.out.println("请输入第"+(i+1)+"个一位数组有几个元素:");
                        int length2 = sc.nextInt();          
                        for (int j = 0;j < length2 ;j++ ) {
                                System.out.println("请输入arr["+i+"]["+j+"]的元素");
                                arr[i][j] = sc.nextInt();                               
                        }
                }
                return arr;
        }

        //遍历输出二维数组
        public static void printArr(int[][] arr){
                for (int i = 0;i < arr.length ;i++ ) {
                        for (int j = 0;j < arr[i].length ;j++ ) {
                                System.out.print(arr[i][j]+"\t");
                        }
                        System.out.println();
                }
                System.out.println();
        }

        //获取最小值
        public static int getMin(int[][] arr) {
                int min = arr[0][0];
                for (int i = 0;i < arr.length ;i++ ) {
                        for (int j = 0;j < arr[i].length ;j++ ) {
                                if (min > arr[i][j]) {
                                        min = arr[i][j];
                                }
                        }
                }
                return min;
        }
}


报错,求大神详解

作者: 小小丶白    时间: 2016-8-21 15:42
System.out.println("请输入第"+(i+1)+"个一位数组有几个元素:");
                        int length2 = sc.nextInt();  
                        arr[i] = new int[length2];

你是不是少了这句话呢?????
作者: 阿卜    时间: 2016-8-21 17:15
1L真相了,你的arr[i]里面存的是null,并没有存入数组。
作者: wl12345    时间: 2016-8-21 19:48
假装听不懂的我,悄悄地路过
作者: JoAndroid    时间: 2016-8-24 22:59
小小丶白 发表于 2016-8-21 15:42
System.out.println("请输入第"+(i+1)+"个一位数组有几个元素:");
                        int length2 =  ...

恩恩 是的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2