我正在制作自己的助理程序,该程序连接到我写的银行管理程序。我希望用户能够输入命令字段:添加$ 5或添加$ 10500或任何其他金额。我如何计算" 10500"而忽略了"添加$"。 "添加$"用于检查用户正在键入的命令以执行操作。这就是我到目前为止所做的。
} else if (AssistantFrame.getCommand().equalsIgnoreCase("add $5")) {
BankBalance.addToBalance(5);
}
这是处理向余额中添加资金的代码。
public static void addToBalance(int balanceAdd){
Commands.setContinuity(0);
if(fileBalance.exists()) {
try {
loadBalance();
} catch (FileNotFoundException | UnsupportedEncodingException e) {
}
balance += balanceAdd;
try {
saveBalance();
} catch (FileNotFoundException | UnsupportedEncodingException e) {
}
AssistantFrame.updateAssistant("Your balance has been succesfully updated.\nYour new balance is - $" + balance);
} else {
AssistantFrame.updateAssistant("Sorry, but you don't seem to have a personal\nbank balance created yet.");
}
答案 0 :(得分:2)
类似的东西:
String command = AssistantFrame.getCommand();
int amount = Integer.parseInt(command.replaceAll("[^\\d]",""));
BankBalance.addToBalance(amount);
答案 1 :(得分:0)
我要做的是遍历所有字符,检查它们的值是否在48到57之间,包括它们,如果是,则将它们添加到字符串中。您将拥有一个仅包含数字的String。然后,您可以使用'Integer.parseInt(...)'
解析字符串答案 2 :(得分:0)
你可以使用String.startsWith(String)
,然后在解析之前使用String.substring(int)
。像,
10
哪个输出
/**
*
* Output and Input
* ----------------
*
* For more control over the execution we'll use a `ProcBuilder` instance to configure
* the process.
*
* The run method builds and spawns the actual process and blocks until the process exits.
* The process takes care of writing the output to a stream, as opposed to the standard
* facilities in the JDK that expect the client to actively consume the
* output from an input stream:
*/
@Test
public void testOutputToStream() {
ByteArrayOutputStream output = new ByteArrayOutputStream();
new ProcBuilder("echo")
.withArg("Hello World!")
.withOutputStream(output)
.run();
assertEquals("Hello World!\n", output.toString());
}
答案 3 :(得分:0)
您要实现的是解析命令。如果您的命令足够简单,您可以简单地使用以下示例:
if(command.startsWith("add $")){
money=command.substring(5);
todo=ADD;
else if(command.startsWith("something else")){
...
todo=SOMETHING_ELSE;
}
...
或者如果您的命令本质上更复杂,那么请查看Lexical Analyzer代码。
...词法分析,lexing或tokenization是将一系列字符(例如在计算机程序或网页中)转换为一系列标记(具有指定且因此标识的含义的字符串)的过程...... Wikipedia
其中一个例子是:here