java創建自定義類的數組
阿新 • • 發佈:2018-02-25
out char string 我想 想是 應該 字母 開始 鄰接矩陣
bian[i].v = scn.nextInt();
bian[i].guanlian[0] = scn.nextInt();
bian[i].guanlian[1] = scn.nextInt();
bian[i].xuhao = (char) (‘a‘+i);
}
}
}
今天在學圖論的最小生成樹,開始一直在想是用鄰接矩陣還是關聯矩陣來表示圖,但是發現這樣都會有好多空間浪費。於是我就自定義一個邊的類,裏面包含了權值,關聯的端點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);
}
}
}
以後大家要記住咯
java創建自定義類的數組