我想计算文本字段中整数的值,而忽略整数之前所需的文本字符串?

时间:2017-11-25 23:10:18

标签: java int jtextfield calculation

我正在制作自己的助理程序,该程序连接到我写的银行管理程序。我希望用户能够输入命令字段:添加$ 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.");

    }

4 个答案:

答案 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