麻煩幫忙分析下這個問題是什麼緣由啊?附上源代碼:java
package com.shuzu;this
import java.util.*;spa
public class FindDog {索引
/**get
* @param argsit
*/io
public static void main(String[] args){編譯
// TODO Auto-generated method stubclass
//設置要輸入的狗的數量thread
System.out.println("請輸入您要存儲的狗的數量");
Scanner str = new Scanner(System.in);
int count = str.nextInt();
Dog[] dog = new Dog[count];
for (int i = 0; i < count; i++) {
System.out.println("請輸入狗的名字");
String str1 = str.nextLine();
dog[i].setName(str1);
System.out.println("請輸入狗的體重");
float wht = str.nextFloat();
dog[i].setWeight(wht);
}
//設置一個sum和一個平均體重變量
float sum,averageWeight;
sum = averageWeight = 0;
//計算狗的平均體重
for(int j=1;j<dog.length;j++){
sum += dog[j].getWeight();
}
averageWeight = sum / dog.length;
//顯示狗的平均體重
System.out.println(dog.length + "只狗的平均體重是:" + averageWeight);
//找出最大狗的名字和最小狗的名字,並打印
float temp1 = dog[0].getWeight(); //temp1用於存儲最重的狗的體重並充當判斷條件
int t1 = 0; //t1用於存儲最重的狗的索引
//float temp2 = temp1;//temp2用於存儲最輕的狗的體重並充當判斷條件
int t2 = 0; //t2用於存儲最輕的狗的索引
for(int k = 1;k<dog.length;k++){
if(temp1 < dog[k].getWeight()){
temp1 = dog[k].getWeight();
t1 = k;
}else{
//temp2 = dog[k].getWeight();
t2 = k;
}
}
//打印最輕最重的狗的名字
System.out.println("最重的狗的名字是:" + dog[t1].getName() + "\n" +
"最輕狗的名字是:" + dog[t2].getName());
System.out.println("請輸入要查找的狗名");
String findName = str.next(); //輸入要查找的狗的名字
for(int m = 0;m<dog.length;m++){
if(findName.equals(dog[m].getName())){
System.out.println("您要查找的狗" + findName +"的體重是:" + dog[m].getWeight());
}
}
}
}
class Dog{
private String name;
private float weight;
//返回名字
public String getName() {
return name;
}
//設置名字
public void setName(String name) {
this.name = name;
}
//返回體重
public float getWeight() {
return weight;
}
//設置體重
public void setWeight(float weight) {
this.weight = weight;
}
}
編譯經過,可是運行出錯了:
4
請輸入狗的名字
Exception in thread "main" java.lang.NullPointerException
at com.shuzu.FindDog.main(FindDog.java:20)