2015-02-05 87 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。