2013-03-26 30 views
-3

我工作的一個遊戲我的編程類,我寫了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); 
     } 
    } 

} 
+3

錯誤告訴你到底發生了什麼問題! – 2013-03-26 22:34:29

+0

如果沒有,那麼也許這會有所幫助:'board20'沒有'moveBoard(int,int)'方法;如果在'board20'源文件中有這種方法,那麼你正在使用其他類的版本,你必須確保你的'board20'可編譯和正確使用 – msi 2013-03-26 22:36:18

+0

我對此缺乏認識表示歉意,米不是最精明的糾正這樣的問題:( – Derek 2013-03-26 22:36:18

回答

0

您有另一個只需一個參數的moveBoard調用。你有理由認爲有一個方法的版本需要兩個整數作爲參數嗎?如果是這樣,你使用的是board20的正確版本嗎?這是你的一類,還是一個圖書館類?你不給它的來源。

錯誤告訴你沒有方法簽名(參數的數量和類型組成簽名)。在編譯器可用的類的版本中沒有這樣的方法。

2

(粗體表示原始的錯誤消息,在適當位置。)在線路220 類board20的方法moveBoard不能被稱爲與給定類型

TogizKumalak20.java(這是稱爲playBoard.moveBoard(playTurn,keyCharAsInt),因爲該方法被聲明爲採用單個cup20參數,但在參數中使用了兩個參數(int,int)方法調用等實際和正式的參數列表長度不同

相關問題