[英]How Do I Get User Input from a TextField and Convert it to a Double?
[英]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.