1
我有一個Java程序,需要從控制檯跨多個類的多個點獲取用戶輸入。我試過在每個班級使用掃描儀,但是當我關閉一臺掃描儀時,它會關閉system.in,所以我想在整個程序中使用同一臺掃描儀。我在主類中打開掃描儀,但是如何在其他類中使用相同的掃描儀?在Java中的多個類中使用掃描器?
我有一個Java程序,需要從控制檯跨多個類的多個點獲取用戶輸入。我試過在每個班級使用掃描儀,但是當我關閉一臺掃描儀時,它會關閉system.in,所以我想在整個程序中使用同一臺掃描儀。我在主類中打開掃描儀,但是如何在其他類中使用相同的掃描儀?在Java中的多個類中使用掃描器?
您必須通過構造函數將掃描器實例注入其他類。如下圖所示:
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);
}
}
import java.util.Scanner;
public class ScannerSaver
{
private Scanner scan;
public ScannerSaver(Scanner s)
{
this.scan = s;
}
}
只需通過掃描儀作爲一個參數。
您可以將參考傳遞給類,使用靜態字段。 –
或者您無法將system.in傳送到掃描儀中。只需將輸入作爲字符串傳遞給掃描器即可。 – Nathan
爲什麼要關閉掃描儀,知道它關閉了標準輸入? –