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