如何在没有nullpointerexception错误的情况下显示锯齿状数组 [英] How do I display my jagged array without nullpointerexception error

查看:62
本文介绍了如何在没有nullpointerexception错误的情况下显示锯齿状数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

每次运行我的代码时,都会收到此错误:



线程main中的异常java.lang.NullPointerException



我尝试过:



 import java.util.Scanner; 
public class JaggedArray
{

public static void main(String [] args)
{

int [] [] jArr;
jArr = new int [25] [];
System.out.println(请输入学生人数:);
Scanner sc = new Scanner(System.in);
int students = sc.nextInt();
for(int i = 0; i< students; ++ i)
{
System.out.println(学生多少年级+(i + 1)+有:);
int gradeNum = sc.nextInt();
jArr [i] = new int [gradeNum];
for(int j = 0; j< gradeNum; ++ j)
{
System.out.println(Please enter grade+(j + 1)+: );
jArr [i] [j] = sc.nextInt();
}
}
System.out.println(你的数组是:);

//在我的方法中显示一个错误,调用
displayArray(jArr);


public static void displayArray(int [] [] jArr)
{

for(int i = 0; i< jArr.length) ; i ++)
{
//它显示了这个嵌套for循环的错误
for(int j = 0; j< jArr [i] .length; j ++)
{
System.out.print(jArr [i] [j] +);
}
System.out.println();
}
}
}

解决方案

Quote:

jArr = new int [25] [];

以上行是罪魁祸首。向下移动数组定义:



  //   ...  
扫描仪sc = 扫描仪(System.in);
int students = sc.nextInt();
jArr = new int [students] []; // < - 这是正确的地方(因为你知道'学生')
for int i = 0 ; i < students; ++ i)
// ..


Every time I run my code, i get this error:

Exception in thread "main" java.lang.NullPointerException

What I have tried:

import java.util.Scanner;
public class JaggedArray 
{

	public static void main(String[] args)
	{
		
		int[][] jArr; 
		jArr = new int[25][];
		System.out.println("Please enter number of students:");
		Scanner sc = new Scanner(System.in);
		int students = sc.nextInt();
		for (int i = 0; i < students; ++i)
		{
			System.out.println("How many grades does student " + (i+1) + " have:");
			int gradeNum = sc.nextInt();
			jArr[i] = new int[gradeNum];
			for (int j = 0; j < gradeNum; ++j)
			{
				System.out.println("Please enter grade " + (j+1) + ":");
				jArr[i][j] = sc.nextInt();
			}
		}
		System.out.println("Your array is: ");

                //It shows an error in my method calling
		displayArray(jArr);
		
	
	public static void displayArray(int[][] jArr)
	{

		for(int i = 0; i < jArr.length; i++)
		{
                        //It shows an error on this nested for loop
			for(int j = 0; j < jArr[i].length; j++)
			{
				System.out.print(jArr[i][j] + " ");
			}
			System.out.println();
		}
	}
}

解决方案

Quote:

jArr = new int[25][];

The above line is the culprit. Move down a bit the array definition:

//...
Scanner sc = new Scanner(System.in);
int students = sc.nextInt();
jArr = new int[students][]; // <- this is the right place (because you know 'students')
for (int i = 0; i < students; ++i)
//..


这篇关于如何在没有nullpointerexception错误的情况下显示锯齿状数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆