2015-02-05 86 views
0

好吧,所以我還是很新的,我不知道我的代碼是怎麼回事。它看起來不錯,但是當我嘗試運行它時,它給了我一個零錯誤的劃分?在一個頁面上我的老師計算人口密度:一個初學者指南

代碼1遞給我:

public class Country 
{ 
    // fields 
    private String name; 
    private int population; 
    private int area; // in square miles 

    // constructors 

    // methods 
    public String getName() 
    { 
     return name; 
    } 

    public int getPopulation() 
    { 
     return population; 
    } 

    public int getArea() 
    { 
     return area; 
    } 

    public void setName(String newName) 
    { 
     name = newName; 
    } 

    public void setPopulation(int newPopulation) 
    { 
     population = newPopulation; 
    } 

    public void setArea(int newArea) 
    { 
     area = newArea; 
    } 

    // population per square mile 
    public int populationDensity() 
    { 
     int density; 
     density = population/area; // integer division truncates 
     return density; 
    } 
} 

,另一個是我做:

public class A03 
{ 
    public static void main(String[] args) 
    { 
     Country country1 = new Country(); 

     String newName = "Macau"; 
     int newPopulation = 453000; 
     int newArea = 6; 
     int density = newPopulation/newArea; 

     country1.setName(newName); 
     country1.setPopulation(newPopulation); 
     country1.setArea(newArea); 

     System.out.printf("Name: " + country1.getName()); 
     System.out.printf("%nPopulation: %,d ", country1.getPopulation()); 
     System.out.printf("%nArea: "+ country1.getArea());  
     System.out.printf("%nPopulation Density: %,d", country1.populationDensity(), "%n"); 
     System.out.println(); 
     System.out.println(); 

     Country country2 = new Country(); 
     String name1 = "Libya"; 
     int population1 = 5900000; 
     int area1 = 679358; 
     int density1 = population1/area1; 

     System.out.printf("Name: %s%n", name1); 
     System.out.printf("Population: %,d%n", population1); 
     System.out.printf("Area: %,d%n", area1); 
     System.out.printf("Population Density: %,d%", country2.populationDensity(), "%n"); 

     System.out.println(); 

     Country country3 = new Country(); 
     String name2 = "USA"; 
     int population2 = 298500000; 
     int area2 = 3539225; 
     int density2 = population2/area2; 

     System.out.printf("Name: %s%n", name2); 
     System.out.printf("Population: %,d%n", population2); 
     System.out.printf("Area: %,d%n", area2); 
     System.out.println(); 

    } 
} 

有人能告訴我什麼是錯的?或者我做的那是錯的。我基本上覆制,粘貼,並改變我的變量,以適應​​下一個國家的人口密度。

+0

你的國家2沒有面積... – njzk2 2015-02-05 20:58:56

回答

4

main中,您沒有在country2country3上調用任何setter方法。你只聲明變量。當一個實例變量未被賦值時,Java分配默認值,對於原始數值類型,它是0。這就解釋了爲什麼你有一個除零誤差。

致電您的設定人員(和獲得者)country2country3

+0

OMG ...我不敢相信我忘了那個! :) 感謝您捕捉! :) – james13 2015-02-05 21:11:47

0

您沒有設置COUNTRY2對象的人口和區域屬性,當調用

 System.out.printf("Population Density: %,d%", country2.populationDensity(), "%n"); 

你除以零的原因是:在populationDensity()您可以通過區域劃分,並沒有設置,所以它的0。