2014-02-19 60 views
1

我有一個Java程序,需要從控制檯跨多個類的多個點獲取用戶輸入。我試過在每個班級使用掃描儀,但是當我關閉一臺掃描儀時,它會關閉system.in,所以我想在整個程序中使用同一臺掃描儀。我在主類中打開掃描儀,但是如何在其他類中使用相同的掃描儀?在Java中的多個類中使用掃描器?

+1

您可以將參考傳遞給類,使用靜態字段。 –

+0

或者您無法將system.in傳送到掃描儀中。只需將輸入作爲字符串傳遞給掃描器即可。 – Nathan

+0

爲什麼要關閉掃描儀,知道它關閉了標準輸入? –

回答

2

您必須通過構造函數將掃描器實例注入其他類。如下圖所示:

import java.util.*; 

public class Test1 
{ 
    private Scanner _scanner; 

    public Test1(Scanner sc) 
    { 
     _scanner = sc; 
    } 
} 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     Scanner sc = new Scanner(System.in); 
     Test1 testObj = new Test1(sc); 
    } 
} 
0
import java.util.Scanner; 

public class ScannerSaver 
{ 
    private Scanner scan; 

    public ScannerSaver(Scanner s) 
    { 
     this.scan = s; 
    } 
} 

只需通過掃描儀作爲一個參數。