2014-02-21 45 views
0

嗨,我一直试图保持每个对象的浮点数,以便我可以得到所有浮点数的总和。浮动代表重量,所以我试图做到以下几点:我宣布的重量总和为float sumOfWeight;,并说sumOfWeight = ++weight;,但它没有得到解决,有什么建议吗?如何保持对对象的某些属性的依赖

Lake weirdLake = new Lake(15); 
     weirdLake.add(new Fish(76, 6.1f)); 
     weirdLake.add(new Fish(32, 0.4f)); 
     weirdLake.add(new Fish(20, 0.9f)); 
     weirdLake.add(new Fish(30, 0.4f)); 
     weirdLake.add(new Fish(140, 7.4f)); 
     weirdLake.add(new Fish(15, 0.3f)); 
     weirdLake.add(new Fish(90, 5.9f)); 
     weirdLake.add(new Fish(120, 6.8f)); 
     weirdLake.add(new Fish(80, 4.8f)); 
     weirdLake.add(new Fish(42, 3.2f)); 
     weirdLake.add(new Fish(100, 5.6f)); 
     weirdLake.add(new Fish(45, 2.0f)); 
     weirdLake.add(new Fish(16, 0.2f)); 
     weirdLake.add(new Fish(30, 1.2f)); 
     weirdLake.add(new Fish(7, 0.1f)); 

这里是我的鱼类:

public class Fish 
{ 
    // Any fish below this size must be thrown back into the lake 
    public static int THROW_BACK_SIZE = 18; 
    public static float WEGHT_LIMIT = 10; 

    protected int size; 
    protected float weight; 

    public Fish(int aSize, float aWeight) 
    { 
     size = aSize; 
     weight = aWeight; 
    } 

    public boolean isDesirableTo(Fisher f) 
    { 
     if(canKeep() && f.numFishCaught < f.LIMIT && weight) 
     { 
      return true; 
     } 
     else 
     { 
     return false; 
     } 
    } 

    public boolean canKeep() 
    { 
     if(this.size > THROW_BACK_SIZE) 
     { 
      return true; 
     } 
     else 
     { 
     return false; 
     } 
    } 

    public int getSize() { return size; } 
    public float getWeight() { return weight; } 

    public String toString() 
    { 
     return ("A " + size + "cm " + weight + "kg Fish"); 
    } 
} 

这里是我渔民类:

import java.util.*; 

public class Fisher 
{ 
    private String name; 
    private Fish [] fishCaught; 
    public int numFishCaught; 
    private int keepSize; 
    public static int LIMIT = 10; 

    public String getName() 
    { 
    return this.name; 
    } 

    public int getNumFishCaught() 
    { 
    return this.numFishCaught; 
    } 

    public int getKeepSize() 
    { 
    return this.keepSize; 
    } 

    public Fisher(String n, int k) 
    { 
    name = n; 
    keepSize = k; 
    } 

    public String toString() 
    { 
    return(this.name + " with " + this.numFishCaught + " fish"); 
    } 
    private ArrayList<Fish> fishesCaught = new ArrayList<Fish>(); 


    public void keep(Fish fish) 
    { 
    if(this.numFishCaught < LIMIT) 
    { 
     fishesCaught.add(fish); 
     numFishCaught++; 
    } 
    } 

    public boolean likes(Fish fish) 
    { 
    if(fish.size >= this.keepSize) 
    { 
     return true; 
    } 

    else 
    { 
     return false; 
    } 
    } 

    public void listThingsCaught() 
    { 
    System.out.println(this.toString()); 

    for(Fish fish : fishesCaught) 
    { 
     System.out.println(fish.toString()); 
    } 
    } 

    public void goFishingIn(Lake lake) 
    { 
    Fish fish = lake.catchSomething(); 

    if(likes(fish)) 
    { 
     this.keep(fish); 
    } 
    else 
    { 
     lake.add(fish); 
    } 
    } 

    public void giveAwayFish(Fisher fisher, Lake lake) 
    { 
    for(Fish fish : fishesCaught) 
    { 
     if(fisher.likes(fish)) 
     { 
     fisher.keep(fish); 
     } 
     else 
     { 
     lake.add(fish); 
     } 
    } 
    fishesCaught.clear(); 
    this.numFishCaught = 0; 
    } 



} 

和我的湖泊类

public class Lake 
{ 
    private Fish[] catchableThings; 
    private int numThings; 

    public Lake(int capacity) 
    { 
     catchableThings = new Fish[capacity]; 
     numThings = 0; 
    } 

    public int getNumCatchableThings() { return numThings; } 
    public boolean isFull() { return numThings == catchableThings.length; } 
    public String toString() { return "Lake with " + numThings + " catchable things"; } 

    // Add the given thing to the lake 
    public void add(Fish aCatchableThing) 
    { 
     if (numThings < catchableThings.length) 
      catchableThings[numThings++] = aCatchableThing; 
    } 

    // Choose a random thing to be caught in the lake and return it 
    public Fish catchSomething() 
    { 
     if (numThings == 0) return null; 

     int index = (int)(Math.random() * numThings); 
     Fish f = catchableThings[index]; 
     catchableThings[index] = catchableThings[numThings-1]; 
     catchableThings[numThings-1] = null; 
     numThings--; 
     return f; 
    } 

    // List all things in the lake 
    public void listAllThings() 
    { 
     System.out.println(" " + this + " as follows:"); 
     for (int i=0; i<numThings; i++) 
      System.out.println(" " + catchableThings[i]); 
     System.out.println(); 
    } 
} 
+0

通常,鱼不漂浮... –

回答

3

请发表你的逻辑在那里你正在增加重量。

sumOfWeight = ++weight将重置sumOfWeight++weight而不是增加weightsumOfWeight

public class Lake { 

    private float sumOfWeight; 

    public void add(Fish fish) { 
     ... 
     sumOfWeight += fish.getWeight(); 
    } 

    public void remove(Fish fish) { 
     .... 
     sumOfWeight -= fish.getWeight(); 
    } 

    public float getLakeWeight() { 
     return this.sumOfWeight; 
    } 
} 
+0

拳头? :D我希望你的意思是鱼;) – pL4Gu33

+0

@ pL4Gu33更正:) –

+1

而伟大的代码,这并不能说明新手做错了什么。 – ErstwhileIII

0

能否请您发表您的类的结构使我们可以看到哪些类型的类定义的成员变量。尝试将sumOfWeight声明为静态varibale,以保持实例化类的所有对象的权重。

+0

当然,我刚刚发布它! – user3330114

+0

你想在哪里计算sumOfWeight ... Lake或Fisher ..或两者? – Kakarot

+0

它并不重要,但我猜渔民会更好 – user3330114

0

你想sumOfWeight = sumOfWeight + weight;

你写的是“加1,重”,然后设置sumOfWeaght该值是什么。

相关问题