2017-11-11 50 views
-1

所以我試圖做一個非常簡單的接口和超類,並且我得到一個問題,我的@Override聲明annotation type not applicable to this kind of declaration。現在我看到this StackOverflow的問題,說這是一個簡單的拼寫錯誤,但我檢查了我的界面和我的類,功能簽名是相同的。下面是接口:
接口和超類的問題

package cit260.harrypotter.view; 
public interface ViewInterface { 
    public void display(); 
    public String[]getInputs(); 
    public String getInput(String promptMessage); 
    public boolean doAction(String[] inputs); 
} 

,這裏是超類:

package cit260.harrypotter.view; 
import java.util.Scanner; 
public abstract class View implements ViewInterface { 

    public View() { 


     @Override 
     public void display(){ 
      boolean endView = false; 
      do { 
       String[] inputs = this.getInputs(); 
       endView = doAction(inputs); 
      } while (!endView); 
     } 

    @Override 
     public String getInput(String promptMessage) { 
      String input; 
      boolean valid = false; 
      while(!valid) { 
       System.out.println(promptMessage); 
       Scanner keyboard = new Scanner(System.in); 
       input = keyboard.nextLine(); input.trim(); 
       if (input.length != 0){ 
        System.out.println("Please enter a valid input"); 
        valid = true; 
       } 
      } 
      return input; 
     } 
    } 
} 

我在做什麼錯?

+0

你的課不會編譯。你已經把所有的方法放在構造函數View中,而不是放在類中。它的意思是關閉View(){}然後設置。 – Optional

+0

@可選謝謝! mayooran幾乎毆打你的拳頭,但我把它移出來,這一切工作!我的問題是現在,如何輸入一個整數?它從鍵盤獲取輸入,沒有特定的整數 –

+1

Mayooran沒有問題。我很抱歉,我不是指整數。它沒有被初始化。所以返回可能會在編譯時聲明它必須被初始化。 – Optional

回答

2

您已經在構造器中聲明瞭方法。 View()是一個構造函數,用於爲您的類初始化值。你需要把你的方法放在構造函數之外。將它們放在您的構造函數旁邊的類中。使用IDE開發。然後在編寫代碼時可以計算出這些錯誤。

+0

謝謝!我會盡快給你答案。而我正在使用一個IDE,它只是給了我那短小的錯誤信息,沒有什麼真正有用的 –

+1

很高興能夠有所幫助:)快樂的編碼! – mayooran

1

構造函數用於初始化類中變量的值。如果你正在實現一個接口,那麼你必須重寫你的類中接口的方法。