我正在尝试比较两个卡片对象并获得最大的一个。 该程序由 2 个类组成,但我不知道如何在 2 张卡片之间获得最大值(value)。
Class 1 包含这段代码:
Pelikortti kortti1 = new Pelikortti("risti",7);
Pelikortti kortti2 = new Pelikortti("ruutu",8);
System.out.println(suurempi(kortti1,kortti2)); //expected: ruutu 8
这一行应该打印 ruutu 8
因为它是具有最大值(value)的卡片。 “suurempi”在我的语言中是“更大”的意思。
到目前为止,第 2 类看起来像这样:
public class Pelikortti {
private String maa1;
private int arvo1;
public Pelikortti(String maa, int arvo){
if(parametritOK(maa,arvo)){
this.maa1 = maa;
this.arvo1 = arvo;
}else{
this.maa1 = "?";
this.arvo1 = -1;
}
}
public Pelikortti() {
this.maa1 = "?";
this.arvo1 = -1;
}
private static boolean parametritOK(String maa, int arvo){
return (maa.equals("risti")||maa.equals("ruutu")||
maa.equals("pata")||maa.equals("hertta"))
&& arvo > 1 && arvo < 15;
}
public void setKortti(String maa, int arvo){
if(parametritOK(maa,arvo)){
this.maa1 = maa;
this.arvo1 = arvo;
}else{
this.maa1 = "?";
this.arvo1 = -1;
}
}
public String getMaa() {
return maa1;
}
public int getArvo() {
return arvo1;
}
public int suurempi(Pelikortti kortti1, Pelikortti kortti2){
if(kortti1>kortti2){
return kortti1;
}
return kortti2;
}
public String toString(){
return(this.maa1 + " " + this.arvo1);
}
}
第二个类也有很多其他方法,因为它是另一个作业的一部分,但这里的问题是当从第 1 类调用时我无法使比较方法起作用。
最佳答案
你要比较的是卡值。并且该值不是卡片对象本身,而是包含该值的属性:arvo1
。
因此您需要比较每个对象的正确属性:kortti1.arvo1
和 kortti2.arvo2
。
注意这个属性是私有(private)的,你不能直接从另一个实例访问它,所以你需要使用 getter getArvo()
。
此外,suurempi
不是静态方法,它需要从类实例中调用。因此它只需要一个参数 (kortti2
),因为 kortti1
将是调用该方法的实例。
您还需要将方法返回类型更改为 Pelikortti
,因为您想要获取卡片对象而不仅仅是它的值(感谢 eltabo 的编辑)
public Pelikortti suurempi(Pelikortti kortti2){
if(this.arvo1>kortti2.getArvo()){
return this;
}
return kortti2;
}
方法调用:
System.out.println(kortti1.suurempi(kortti2));
编辑:
如果对 suurempi
的调用必须来自另一个类(我们称它为 ClassA
)并遵循以下语法:
System.out.println(suurempi(kortti1,kortti2));
这意味着 suurempi
是在 ClassA
中定义的,而不是在 Pelikortti
中定义的,您需要移动您的代码。
除了您不使用 this
而是使用正确的参数外,它非常相似。
public Pelikortti suurempi(Pelikortti kortti1, Pelikortti kortti2){
if(kortti1.getArvo()>kortti2.getArvo()){
return kortti1;
}
return kortti2;
}
关于java - 不同类别中更大的纸牌值(value)(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49770355/