2016-07-31 90 views
0

我剛開始學習Java,並編寫了這段代碼來練習創建接口。我意識到在這裏使用接口關係可能不是它應該被實際使用的方式,但我只是爲了練習和基本理解而這樣做。在多個類中使用掃描器

因此,無論如何,我創建了程序,讓用戶輸入他們想要執行的操作,然後執行上述操作。爲此,用戶提供兩個輸入:首先是他們想要執行的操作,然後是他們希望執行的操作。例如,如果他們想要找到4的平方根,他們首先輸入2來選擇平方根,然後輸入4來表示他們想要找到4的平方根。爲此,我打開掃描儀在多個類上的類。但是,關閉任何一個類中的掃描器都會產生一個錯誤,因爲顯然一旦關閉它在文件中就無法重新打開。我搜索了很多,大部分建議都是圍繞着說使用像這樣的掃描器的多個實例而產生問題,因此只創建一個。雖然我可以重寫這個代碼,以使這一調整,我想知道是否有辦法,我可以做我所做的事情不會產生任何警告信息,就像他們在這段代碼彈出:

import java.util.Scanner; 

public class Operation 
{ 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 
     System.out.println("1. Square"); 
     System.out.println("2. Square Root"); 
     System.out.print("Enter Number: "); 
     int choice = in.nextInt(); 

     switch(choice) 
     { 
     case 1: 
     Squaring s1 = new Squaring(); 
     s1.getDim(); 
     s1.operate(); 
     break; 

     case 2: 
     Root r1 = new Root(); 
     r1.getDim(); 
     r1.operate(); 
     } 
    } 
} 

interface Method 
{ 
    void getDim(); 
    void operate(); 
} 

class Squaring implements Method 
{ 
    double n, r; 

    public void getDim() 
    { 
     Scanner in = new Scanner(System.in); 
     System.out.print("Input Number: "); 
     n = in.nextDouble(); 
    } 

    public void operate() 
    { 
     r = n*n; 
     System.out.println("Squared of " + n + " is = " + r); 
    } 
} 

class Root implements Method 
{ 
    double n, r; 

    public void getDim() 
    { 
     Scanner in = new Scanner(System.in); 
     System.out.print("Input Number: "); 
     n = in.nextDouble(); 
     in.close(); 
    } 

    public void operate() 
    { 
     r = Math.sqrt(n); 
     System.out.println("Square root of " + n + " is = " + r); 
    } 
} 
+0

您粘貼的代碼不會顯示任何警告/錯誤。它工作得很好。你還想要什麼? – progyammer

回答

1

警告彈出窗口我的IDE(Netbeans)演示用於Override註釋和您實例化的Scanner對象。 您的代碼看起來是這樣的,如果你想消除警告:

class Squaring implements Method 
{ 
    double n, r; 

    @Override 
    public void getDim() 
    { 
     try (Scanner in = new Scanner(System.in)) { 
      System.out.print("Input Number: "); 
      n = in.nextDouble(); 
     } 
    } 

    @Override 
    public void operate() 
    { 
     r = n*n; 
     System.out.println("Squared of " + n + " is = " + r); 
    } 
} 

的覆蓋註解的使用,因爲你是壓倒一切的,因爲每個類(磨邊根)正在實施的接口的這個方法。

另外,我添加的try子句是你稍後會學到的東西(你仍然是初級,但它是基本知道的),並且與異常/錯誤處理有關。


爲了避免錯誤,同時關閉掃描對象試試這個:

  • 創建一個類,讓說的MyStatics類。
  • 構造函數是不需要的。通過這個例子

    public static Scanner scan = new Scanner(System.in);

  • 呼叫從任何你想要的類掃描對象:添加爲一個對象

    String input = MyStatics.scan.nextLine();

  • 在的excecution年底關閉掃描儀對象該程序。

我希望這會解決您在代碼中遇到的所有問題。