2013-12-15 181 views
1

我寫了以下內容,將幾行代碼作爲字符串掃描並解析爲整數。但在我的主要方法中,我使用p.letsReadIn來讀取文件。有誰知道我可以如何將其轉換爲使用命令行參數來代替文件?因此,而不是讓用戶更改p.letsReadIn(「ReadMuah.txt」);每次只能使用命令行來讀取文件。從命令行獲取參數

public void letsReadIn(String filename) throws FileNotFoundException { 
     int x; 
     Scanner scan = new Scanner(new File(filename)); 

     StringTokenizer st; 
     String nextLine = scan.nextLine(); 

     st = new StringTokenizer(nextLine); 

     x = Integer.parseInt(st.nextToken()); 

     nextLine = scan.nextLine(); 

     st = new StringTokenizer(nextLine); 

     y= Integer.parseInt(st.nextToken()); 

     nextLine = scan.nextLine(); 

     st = new StringTokenizer(nextLine); 

     z= Integer.parseInt(st.nextToken()); 

     for (int i = 0; i < x; i++) { 
      nextLine = scan.nextLine(); 
      st = new StringTokenizer(nextLine); 
      listing.add(Integer.parseInt(st.nextToken())); 
     } 

     scan.close(); 
    } 
    public static void main(String[] args) throws FileNotFoundException { 

     BagItems p = new BagItems(); 
     p.letsReadIn("ReadMuah.txt"); 
     p.StartBagging(); 

    } 

回答

2

String[] args的參數爲main()方法是命令行參數。如果你把文件名放在命令行上,它會在那個數組中。

0

您可以使用p.parser(args[0]);,當然您需要檢查args是否包含一些字符串。即你已經通過了一個參數,只是做if (args.length > 0)

0

使用args []中的第一個元素代替代碼中的硬編碼文件名。

public static void main(String[] args) throws FileNotFoundException { 
    BagItems p = new BagItems(); 
    if (args.length > 0) 
    { 
     p.parser(args[0]); 
     p.StartBagging(); 
    } 
    else 
    { 
     p.parser("hard-coded-file.txt"); 
     p.StartBagging(); 
    } 
} 

現在你可以傳遞文件名作爲命令行程序,你的代碼應該選擇它。

請注意,數組索引從默認情況下從0開始,所以,要訪問數組的第一個元素(命令行參數數組),您應該使用[0]。

有關更多提示,請點擊下面的鏈接。

how to accept values using command line argument in java

1

這取決於你的意思「使用命令行參數,而不是採取在文件」

如果你的意思是在命令行(直譯)取參數本身然後更換ScannerScanner.parseInt調用與迭代String[]的東西,並使用Integer.parseInt(String)調用解析。但是這會給你一個非用戶友好的命令行語法,所以你可能想要添加一些「選項」或其他東西

如果你的意思是你希望能夠指定輸入參數的來源在命令行,然後再嘗試這樣的事:

InputStream in; 
if (args.length > 0) { 
    in = new FileInoputStream(args[0]); 
} else { 
    in = System.in; 
} = System.in 
.... 
Scanner scan = new Scanner(input); 
// Read as before. 

本(或類似的東西)將允許你的應用程序來讀取輸入或者從一個指定的文件,或者從標準輸入。在後一種情況下,你可以像這樣運行它(在Linux上)

$ java ... my.Program << EOF 
1 
2 
... 
EOF