如何在java中拆分用户输入 - 并转换为double?

时间:2015-11-07 16:41:13

标签: java string split converter

我正在制作一个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,因此我可以计算货币等。

3 个答案:

答案 0 :(得分:0)

  

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

所有数值数据类型都有一个解析方法,用于将String值转换为数值:

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

它将举例说明String不是有效数字。

答案 1 :(得分:0)

你可以使用内置的Double类来解析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

答案 2 :(得分:0)

您可以编写解析器或使用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;
    }
}