我试图写一个股市模拟。 对不起,我用德语写了代码,但这对我来说更容易...... 所以理解:Aktie ==股票,Boerse ==股票市场
在班级" Boerse"我有一个带有ArrayLists的HashMap,在这些ArrayLists中是类的对象" Aktie"。
现在我想访问方法" getOwner()"和" setOwner()"一个对象" Aktie"在方法"买()"在HashMap中的这个ArrayList中,但这是不可能的。 :(但为什么??
这是课程的代码" Boerse":
import java.util.*;
public class Boerse {
HashMap<String,ArrayList> inventory = new HashMap<String, ArrayList>();
HashMap<String,User> users = new HashMap<String, User>();
Aktie[] Apple = new Aktie[10];
/**
* Main Methode der Klasse Boerse
*/
public static void main(String[] args)
{
Boerse b = new Boerse();
}
/**
* Erzeugt ein Objekt der Klasse Boerse
*/
public Boerse()
{
FillInventory();
System.out.println(inventory.get("Apple").toString());
//buy("Apple", "Jonas");
System.out.println(inventory.get("Apple").toString());
}
/**
* Diese Methode fuegt dem Inventar die verfuegbaren Aktien zu
*/
public void FillInventory()
{
/*
* //Sample
* ArrayList<Aktie> Sample = new ArrayList<Aktie>();
* int nSample = 0;
* double vSample = 0;
* Aktie aSample = new Aktie("Sample", vSample);
* for(int i=0;i<nSample;i++)
* {
* Sample.add(aSample);
* }
* inventory.put("Sample", Sample);
*/
//Apple
ArrayList<Aktie> Apple = new ArrayList<Aktie>();
int nApple = 10;
double vApple = 50.0;
Aktie aApple = new Aktie("Apple", vApple);
for(int i=0;i<nApple;i++)
{
Apple.add(aApple);
}
inventory.put("Apple", Apple);
//Google
ArrayList<Aktie> Google = new ArrayList<Aktie>();
int nGoogle = 15;
double vGoogle = 64.5;
Aktie aGoogle = new Aktie("Google", vGoogle);
for(int i=0;i<nGoogle;i++)
{
Google.add(aGoogle);
}
inventory.put("Google", Google);
System.out.println(inventory.toString());
}
private void buy(String userName, String userPassword, String aktie,String pOwner)
{
for(int i=0;i<inventory.get(aktie).size();i++)
{
if(inventory.get(aktie).get(i).getOwner()==null) //here is the problem
{
inventory.get(aktie).get(i).setOwner(pOwner); //here is the problem
break;
}
}
}
}
班级&#34; Aktie&#34;:
public class Aktie {
public double value;
public String name;
public String owner = null;
/**
* Erzeugt ein Objekt der Klasse Aktie
* @param pName Name der Aktie
* @param pValue Wert der Aktie
*/
public Aktie(String pName, double pValue)
{
name=pName;
value=pValue;
}
/**
* Aendert den Besitzer der Aktie
* @param pOwner neuer Besitzer der Aktie
*/
public void setOwner(String pOwner)
{
owner = pOwner;
}
/**
* Gibt den Namen des Besitzers aus
* @return
*/
public String getOwner()
{
return owner;
}
}
答案 0 :(得分:1)
尝试JB Nizet指定或使用类型转换如下
private void buy(String userName, String userPassword, String aktie,String pOwner)
{
for(int i=0;i<inventory.get(aktie).size();i++)
{
if(((Aktie) inventory.get(aktie).get(i)).getOwner()==null) //typecast here
{
((Aktie) inventory.get(aktie).get(i)).setOwner(pOwner); //typecast here
break;
}
}
}