当我运行我的代码时,我会看到一个屏幕,要求一个引用(已经编码并且工作正常)。所以当我输入IW1
作为引用时,我的输出应该是IW1
的细节,也就是"IW1", new troop(1, "Twisters", 200, 200))
。然而,我得到了以下错误:Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - incompatible types: java.lang.String cannot be converted to java.util.HashMap<java.lang.String,OODCwk.troop>
OODCwk
是软件包的名称
public String getTroopDetails(String ref)
{
if ("IW1".equals(ref) ){
HashMap<String, troop> Troop= getTroopDetails(ref);
System.out.println(Troop.get("IW1"));
}else{
return "!";
}
return "\nNo such troop";
}
private void setupTroop()
{
HashMap<String, troop>Troop= new HashMap<String, troop>();
Troop.put("IW1", new troop(1, "Twisters", 200, 200));
}
public class troop{
int FleetRef;
String FullName;
int ActivationFee;
int BattleStrength;
public troop(int FRef, String FName, int AFee, int BStrength)
{
FleetRef = FRef;
FullName = FName;
ActivationFee = AFee;
BattleStrength = BStrength;
}
public int getFleetRef()
{
return FleetRef;
}
public String getFullName()
{
return FullName;
}
public int getActivationFee()
{
return ActivationFee;
}
public int BattleStrength()
{
return BattleStrength;
}
}
1条答案
按热度按时间nhhxz33t1#
这里有几个不同的问题:
1.编译错误:
incompatible types: java.lang.String cannot be converted to java.util.HashMap<java.lang.String,OODCwk.troop>
解决方案:如果你需要一个散列表,不要调用“String getTroopDetails()”。
1.在方法getTroopDetails()内对getTroopDetails()的虚假调用
解决方案:这里听起来像是要调用一个不同的方法。
1.类名“coat”应以大写字母开头
解决方案:根据Java naming conventions,您应该将类重命名为
Troop
,并重命名其构造函数public troop(int fRef, String fName, int aFee, int bStrength)
1.setupTroop()实际上不执行任何操作
解决方案:将HashMap * 移出setupTroop()*,并使其成为类“Troop”的成员。
根据您随后的评论:
@AlexRudenko我试图实现的是,一旦我输入IW 1,我希望输出是IW 1的细节,即1,“Twisters”,200,200,如果检测到任何其他输入,它将返回No such team
解决方案: