我正在尝试理解下面的代码,其中返回类型被视为不兼容。
return new PassLine(One, Two, roll);
incompatible types: PassLine cannot be converted to TheDie
希望有人能说清楚,以便我可以继续。
我希望得到dieOne + dieTwo的总和。
public class PassLine {
private int thePoint;
private final TheDie dieOne;
private final TheDie dieTwo;
private final TheDie rollTheDie;
public PassLine(TheDie dieOne, TheDie dieTwo, TheDie rollTheDie) {
super();
this.dieOne = dieOne;
this.dieTwo = dieTwo;
this.rollTheDie = rollTheDie;
}
public TheDie dieOne() {
TheDie obj = new TheDie();
obj.rollTheDie();
return dieOne;
}
public TheDie dieTwo() {
TheDie obj = new TheDie();
obj.rollTheDie();
return dieTwo;
}
public TheDie rollTheDie() {
dieOne();
dieTwo();
return rollTheDie;
}
public PassLine passLine() {
TheDie One = dieOne();
TheDie Two = dieTwo();
TheDie roll = rollTheDie();
return new PassLine(One, Two, roll);
}
public static void main(String[] args) {
System.exit(0);
}
}
来自 - 公共决赛班TheDie
public int rollTheDie() {
Random rand = new Random();
oneDie = rand.nextInt(6) + 1;
return oneDie;
}
新的错误消息如下:
于: 返回新的PassLine(一,二,滚动);
错误:
Incompatible Type: TheDiecannot be converted to String
Incompatible Type: TheDiecannot be converted to String
Introduce...
May split declaration into a declaration and assignment
Flip operands of the binary operator
答案 0 :(得分:2)
错误不能更清楚,
public TheDie PassLine() {
TheDie One = dieOne();
TheDie Two = dieTwo();
TheDie roll = rollTheDie();
return new PassLine(One, Two, roll);
}
您指定在返回TheDie
对象时该方法应返回PassLine
对象。
根据您的错误消息
不兼容的类型:PassLine无法转换为TheDie
两种类型都不兼容,请将方法更改为
public PassLine PassLine() {
TheDie One = dieOne();
TheDie Two = dieTwo();
TheDie roll = rollTheDie();
return new PassLine(One, Two, roll);
}
也许您真的想通过调用一个真正在新TheDie
对象上返回TheDie
的方法来返回PassLine
。
答案 1 :(得分:1)
方法PassLine
(奇怪的名称,与类的名称相同...)被声明为返回TheDie
对象,但返回PassLine
对象,因此错误。< / p>
您必须将方法的返回类型更改为PassLine
或返回TheDie
对象。
你真的想拥有一个同名的方法吗?它不是一个编辑不好的构造函数吗?
请注意:Java命名约定是:
您的课程PassLine
的方法为PassLine
(应为passLine
)
答案 2 :(得分:0)
您有两种不同的类类型:TheDie和PassLine。假设TheDie不是一个从PassLine扩展的类,你将会有不兼容的类型,因为
public TheDie PassLine() {
...
return new PassLine(One, Two, roll);
}
方法标题指出您应该返回TheDie的对象。
答案 3 :(得分:0)
在您的代码中:
public TheDie PassLine() {
TheDie One = dieOne();
TheDie Two = dieTwo();
TheDie roll = rollTheDie();
return new PassLine(One, Two, roll);
}
您正在尝试将PassLine作为TheDie返回。
将public TheDie PassLine()
更改为public PassLine PassLine()