我工作的一個遊戲我的編程類,我寫了Eclipse中的代碼中它沒有明顯的錯誤,但是當我編譯我收到以下錯誤信息:Java實際和形式參數列表的長度不同?
TogizKumalak20.java:220: error: method moveBoard in class board20 cannot be applied to given types; playBoard.moveBoard(playTurn, keyCharAsInt); required: cup20 found: int,int reason: actual and formal argument lists differ in length
我不知道是什麼造成這種情況以及如何解決這個問題。任何意見都非常感謝,並提前致謝!
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Cursor;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.*;
import java.io.*;
import javax.swing.JFileChooser;
import java.awt.Color;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class TogizKumalak20
{
public static void main(String[] args)
{
TKFrame myFrame = new TKFrame();
myFrame.setTitle("Togiz Kumalak U22");
myFrame.setVisible(true);
}
}
class TKFrame extends JFrame
{
private TKPanel myPanel;
private final int FRAMEW = 700;
private final int FRAMEH = 700;
public TKFrame()
{
setSize(FRAMEW, FRAMEH);
myPanel = new TKPanel();
Container contentPane = getContentPane();
contentPane.add(myPanel);
addWindowListener(new WindowCloser());
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
JMenuItem restartItem = new JMenuItem("Restart");
fileMenu.add(restartItem);
RestartListener myRestartListener = new RestartListener();
restartItem.addActionListener(myRestartListener);
JMenuItem exitItem = new JMenuItem("Exit");
fileMenu.add(exitItem);
ExitListener myExitListener = new ExitListener();
exitItem.addActionListener(myExitListener);
}
private class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent event)
{
dispose();
}
}
private class RestartListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
myPanel.renewBoard();
myPanel.renewTextArea();
myPanel.setMoveCount(1);
}
}
private class ExitListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
}
}
class TKPanel extends JPanel
{
private board20 playBoard;
private int playTurn;
private JTextArea actionRecordArea;
private JScrollPane actionScrollPane;
private int moveCount = 1;
public TKPanel()
{
super();
playTurn = 1;
playBoard = new board20();
actionRecordArea = new JTextArea(6, 24);
actionRecordArea.setEditable(false);
actionScrollPane = new JScrollPane(actionRecordArea,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
add(actionScrollPane, "North");
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
addKeyListener(new KeyHandler());
setFocusable(true);
}
public void renewBoard()
{
playBoard = new board20();
repaint();
}
public void renewTextArea()
{
actionRecordArea.setText("");
repaint();
}
public int getMoveCount()
{
return moveCount;
}
public void setMoveCount(int countIn)
{
moveCount = countIn;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
playBoard.drawBoard(g2);
}
private class MouseHandler extends MouseAdapter
{
public void mouseClicked(MouseEvent event)
{
cup20 returnedCup;
returnedCup = playBoard.isTheMouseInaCup(event.getPoint());
if(returnedCup != null)
{
if(returnedCup.getWhoseCup() == playTurn)
{
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
playBoard.moveBoard(returnedCup);
int whatCupNumber = playBoard.getCupNumber(returnedCup);
actionRecordArea.append("Move: " + moveCount + ". Player: " + playTurn + ". Cup: " + whatCupNumber + ".\n");
moveCount++;
if(playTurn == 1)
playTurn = 2;
else
playTurn = 1;
repaint();
}
}
}
}
private class MouseMotionHandler extends MouseMotionAdapter
{
public void mouseMoved(MouseEvent event)
{
cup20 retCup = playBoard.isTheMouseInaCup(event.getPoint());
if(retCup == null)
setCursor(Cursor.getDefaultCursor());
else
{
if(retCup.getWhoseCup() == playTurn)
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
else
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
}
}
private class KeyHandler extends KeyAdapter
{
public void keyTyped(KeyEvent event)
{
char keyChar = event.getKeyChar();
int keyCharAsInt;
if(keyChar == '1' || keyChar == '2' || keyChar == '3' || keyChar == '4' || keyChar == '5' || keyChar == '6' || keyChar =='7' || keyChar == '8' || keyChar == '9')
{
keyCharAsInt = (int) keyChar - 48;
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
playBoard.moveBoard(playTurn, keyCharAsInt);
actionRecordArea.append("Move: " + moveCount + ". Player: " + playTurn + ". Cup: " + keyCharAsInt + ".\n");
moveCount++;
if(playTurn == 1)
playTurn = 2;
else
playTurn = 1;
repaint();
}
else
{
}
}
public board20 getBoard()
{
return playBoard;
}
public String getText()
{
return actionRecordArea.getText();
}
public void setText(String textIn)
{
actionRecordArea.setText(textIn);
}
}
}
錯誤告訴你到底發生了什麼問題! – 2013-03-26 22:34:29
如果沒有,那麼也許這會有所幫助:'board20'沒有'moveBoard(int,int)'方法;如果在'board20'源文件中有這種方法,那麼你正在使用其他類的版本,你必須確保你的'board20'可編譯和正確使用 – msi 2013-03-26 22:36:18
我對此缺乏認識表示歉意,米不是最精明的糾正這樣的問題:( – Derek 2013-03-26 22:36:18