它表示数字125,100是行中不兼容的类型:_die1 = newDie(125,100);
我不明白它,因为在NewDie方法中它需要int 2 int,所以它应该工作正常......?!基本上这个程序创建骰子卷,我试图让它显示滚动#2
import java.awt.*;
// The panel which holds the two dice
import javax.swing.*;
public class DicePanel extends JPanel
{
// instance variables
private Die _die1, _die2;
private int _roll;
/**
* Constructor for objects of class DicePanel
*/
public DicePanel()
{
// initialise instance variables
super();
setBackground(Color.GRAY);
_die1 = new Die(125,100);
_die2 = new Die(250,100);
roll();
}
// display the dice in the panel
public void paintComponent(Graphics pen)
{
super.paintComponent(pen);
Graphics2D aBetterPen = (Graphics2D)pen;
_die1.paint(aBetterPen);
_die2.paint(aBetterPen);
}
// roll both dice and display them
public void roll()
{
// _die1 = new Two(125,100);
// _die2 = new Three(250,100);
_die1 = newDie(125,100);
// _die2 = DicePanel.newDie(250,100);
//repaint();
}
// retrieve the value of each die
public int getDie1()
{
return _die1.getValue();
}
public int getDie2()
{
return _die2.getValue();
}
// factory method for a die
public void newDie(int x, int y){
//_roll = randomNumber(1,6);
_die1 = new Two(x,y);
// _die2 = new Three(x,y);
}
// random number generator to return and integer between two integers, inclusive.
public static int randomNumber(int low, int high){
return low + (int)(Math.random()*(high-low+1));
}
}
答案 0 :(得分:3)
newDie
返回void
,这显然与_die
的Die类型不兼容。
答案 1 :(得分:1)
没有说明newDie(125,100)
的行。然而,有一条线说new Die(125,100)
......这意味着一些非常不同的东西。它是构造函数调用而不是方法调用。
所以:
您正在调用newDie
方法,因为newDie
返回void
或
您正在调用Die构造函数为new Die(125, 100)
,并且正式和实际参数类型不匹配。
鉴于错误消息是抱怨125
和100
,我认为第二种解释是更有可能的。但是你没有在你的问题中包含Die
构造函数声明,所以我无法确定。
我还应该添加_die1
,_die2
和_roll
根据大多数 Java编码样式违反编码风格... ...特别是Oracle推荐的编码风格。你有充分的理由不同(和个人偏好不是一个好理由)然后你应该编写你的Java代码以符合主流风格。
你的代码缩进也与我见过的任何编码风格不一致......也应该修复。
如果您纯粹为了自己的利益编写代码,而其他任何人都不必阅读它,那么您的代码风格就是您自己的事业。但是如果你想要任何人(例如你的讲师,你的同事,StackExchange读者)阅读它,那么风格重要。