繁体   English   中英

我如何在 Java 中拆分用户输入 - 并转换为双精度?

[英]How do i split user input in java - and convert into double?

我正在用 Java 制作货币转换器。 用户同时输入金额和货币(10 美元)。

我首先需要将用户输入拆分为两个字符串,然后将其中一个转换为双变量,需要一些帮助。

System.out.println("Enter the number of value (double) and currency name. (eg. 10 USD)");
String streng = tastatur.nextLine();

//Split ??
String wordsplit = streng.split(" ", 2);

所以我需要将用户输入的第一部分转换为双精度,这样我就可以计算货币等。

我需要将用户输入的第一部分转换为双精度,

所有数值数据类型都有一个解析方法将字符串值转换为数值:

double amount = Double.parseDouble( wordsplit[0] );

它会抛出一个例子是字符串不是一个有效的数字。

您可以使用内置的 Double 类来解析双精度值,因此您将拥有:

System.out.println("Enter the number of value (double) and currency name. (eg. 10 USD)");
String streng = tastatur.nextLine();

//splits the string
String wordsplit = streng.split(" ");
double d = Double.parseDouble(wordsplit[0]);

编辑:如果您希望显示 19.00 美元等数字,则需要进行一些编码魔法,因为如果双精度以零结尾(第一个例如 19.0 除外),则它会被截断,因此如果您进行转换它是一个字符串,你将留下 19.0 而不是 19.00

您可以编写解析器或使用java.lang.text.NumberFormat

package money;

import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

/**
 * ParseDemo
 * @author Michael
 * @link https://stackoverflow.com/questions/33585135/how-do-i-split-user-input-in-java-and-convert-into-double
 * @since 11/7/2015 11:45 AM
 */
public class ParseDemo {

    public static void main(String[] args) {
        String test = "10.01 USD";

        System.out.println(String.format("amount: %10.2f", parseMoney(test)));

        test = "$10.04";
        try {
            double amount = (NumberFormat.getCurrencyInstance(Locale.US)).parse(test).doubleValue();
            System.out.println(String.format("amount: %10.2f", amount));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    private static double parseMoney(String usd) {
        double amount = -1.0;
        if ((usd != null) && (usd.trim().length() > 0)) {
            usd = usd.replace("$", "");
            String [] tokens = usd.split("\\s+");
            if (tokens.length > 0) {
                amount = Double.parseDouble(tokens[0]);
            }
        }
        return amount;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM