今天在学图论的最小生成树,开始一直在想是用邻接矩阵还是关联矩阵来表示图,但是发现这样都会有好多空间浪费。于是我就自定义一个边的类,里面包含了权值,关联的端点1,端点2,和图的表示字母。发现我想创建11条边,Bian[] = new Bian[11]时; 然后调用Bian[0].v一直报空指针异常,还百度了,发现有些小伙伴和我遇到一样的问题。于是仔细想了想,发现在java中,数组存放的是这个类型的对象,万物皆对象。我定义Bian[] 时里面应该要存放Bian[]类型先。例如以下程序
import java.util.Scanner; class Bian{ int v; //边的权值 int guanlian[] = new int[2];//每条边都是关联2个点 char xuhao; } public class Test { public static void main(String[] args) { System.out.println("请输入这个图有几条边:"); //用关联矩阵表示图 Scanner scn = new Scanner(System.in); int n = scn.nextInt(); Bian bian[] = new Bian[n]; //初始化了这么多条边,则开始输入 for(int i=0;i<n;i++){ bian[i] = new Bian(); //要先创建这个对象放在这个数组中才能使用 bian[i].v = scn.nextInt(); bian[i].guanlian[0] = scn.nextInt(); bian[i].guanlian[1] = scn.nextInt(); bian[i].xuhao = (char) ('a'+i); } } }
以后大家要记住咯