【发布时间】:2016-01-12 21:54:47
【问题描述】:
我有以下代码,想修改它以接受命令行参数,而不是使用扫描仪读取文件。您能指出我需要在代码中进行的一些更改吗?任何帮助表示赞赏。我将有一个名为 prgm.cmd 的文件,并将在 UNIX 上执行它,如下所示。 prgm.cmd 是实际参数!
java Commander prgm.cmd
现在我只能通过使用来让程序工作
java Commander < prgm.cmd
代码
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Commander
{
public static void main(String[] args)
{
Map<String,Integer> expression = new HashMap<String,Integer>();
ArrayList<String> list = new ArrayList<String>();
Scanner sc = new Scanner(System.in);
while(true)
{
list.add(sc.nextLine());
if(!sc.hasNextLine()) break;
}
ArrayList<String> tokens = new ArrayList<String>();
ArrayList<String> PRINT = new ArrayList<String>();
for(String element : list) {
StringTokenizer st = new StringTokenizer(element);
if(!element.startsWith("PRINT")) {
while(st.hasMoreTokens()) {
tokens.add(st.nextToken());
}
expression.put(tokens.get(0),Integer.parseInt(tokens.get(2)));
tokens.clear();
} else {
while(st.hasMoreTokens())
PRINT.add(st.nextToken());
System.out.println(expression.get(PRINT.get(1)));
PRINT.clear();
}
}
}
}
示例命令文件:PRGM.CMD
A = 6
C = 14
PRINT C
B = 12
C = 8
PRINT A
输出
14
6
【问题讨论】:
-
命令行参数将在
args参数中传递给main方法。
标签: java command-line-arguments