[英]Summing up an ArrayList with multiple types
我在總結我在我的班級Accountant
中的班級Treasureroom
中制作的ArrayList
時遇到了麻煩。 我有一個類型為Valuable
的ArrayList
,您可以在下面的代碼中看到。 我需要能夠總結Accountant
類中的所有int
元素。
會計
package Accountant;
import java.util.Iterator;
import java.util.Random;
import ValuableFactory.Valuable;
import rw.RWMonitor;
import rw.Treasureroom;
public class Accountant implements Runnable {
private Treasureroom treasureroom;
private static final int MAX_WAIT_TIME = 10000; // 3 seconds
private static final int MAX_WORK_TIME = 5000; // 2 seconds
private static final Random random = new Random();
private int no;
private RWMonitor monitor;
private Treasureroom resource;
public Accountant( int no, RWMonitor monitor, Treasureroom resource ) {
this.no = no;
this.monitor = monitor;
this.resource = resource;
}
public void run() {
while(true) {
try {
Thread.sleep(random.nextInt(WAIT_TIME));
}
catch (InterruptedException ex) {
}
System.out.println("Accountant counts: " + resource);
monitor.acquireRead();
//System.out.println("Accountant counted: " + valuable);
try {
Thread.sleep(random.nextInt(MAX_WAIT_TIME));
}
catch (InterruptedException ex) {
}
for (int i = 0; i > resource.)
System.out.println("Accountant counted: " + resource.getValueRead());
monitor.releaseRead();
try {
Thread.sleep(random.nextInt(WAIT_AGAIN));
}
catch (InterruptedException ex) {
// TODO: handle exception
}
}
}
//System.out.println("The total sum of TreasureRoom is " + Thread.currentThread().getName());
//TreasureRoom.releaseRead();
}
藏寶室
package rw;
import java.util.*;
import ValuableFactory.*;
public class Treasureroom {
ArrayList<Valuable> valuables = new ArrayList<Valuable>();
public Valuable getValueWriter() {
return valuables.remove(0);
}
public void updateValue(Valuable valuable) {
valuables.add(valuable);
}
public boolean removeValue(Valuable valuable) {
return valuables.remove(valuable);
}
public Valuable getValueReade() {
for (int i=0; i<valuables.size();i++) {
return valuables.get(i);
}
return null;
}
}
有價值的
package ValuableFactory;
public class Valuable implements ValuableFactory {
private String name;
private int value;
public Valuable(String name, int value) {
this.name = name;
this.value = value;
}
@Override
public String getName() {
return name;
}
@Override
public int getValue() {
return value;
}
}
您的Accountant
類在其構造函數中實例化您的Treasureroom
對象,這意味着要使用Accountant
對象循環遍歷Treasureroom
對象內的ArrayList
,您需要Accountant
中的一個方法調用Treasureroom
中的一個方法。
public int getTreasureSum()
{
return resource.sumTreasure();
}
public int sumTreasure()
{
int sum = 0;
for(int i = 0; i < valuables.size(); i++)
{
sum+= valuables.get(i).getValue();
}
return sum;
}
同樣在您的Accountant
類中,您有一個未使用的Treasureroom
對象
private Treasureroom treasureroom;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.