java - 如何通过扫描仪将双精度值导入控制台
问题描述
每当我为 a、b 或 ci 输入像 5.9 这样的双精度值时,都会出现不匹配异常错误。我的目标是通过使用扫描仪导入 a、b 和 c 的值来创建二次函数。
import java.util.Scanner;
public class Main {
static Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
Wrappers.quadraticWrapper(scan);
}
static class Wrappers {
public static void quadraticWrapper(Scanner s){
System.out.print("Insert for a: ");
double a = s.nextDouble();
System.out.print("insert for b: ");
double b = s.nextDouble();
System.out.print("insert for c: ");
double c = s.nextDouble();
printArr(Formulas.quadraticF(a, b, c));
}
private static void printArr(double[] arr) {
System.out.println("[");
for (double d : arr) {
System.out.print(d + " ");
} System.out.println("]");
}
}
static class Formulas{
public static double[] quadraticF(double a, double b, double c) {
double[] arr = new double[2];
double x1, x2;
x1 = (-b + Math.sqrt(Math.pow(b, 2) - ((4) * (a) * (c))))/(2 * a);
x2 = (-b - Math.sqrt(Math.pow(b, 2) - ((4) * (a) * (c))))/(2 * a);
arr[0] = x1;
arr[1] = x2;
return arr;
}
}
}
感谢您的帮助!感谢:D
解决方案
您是否尝试使用逗号作为小数分隔符添加双精度值?
Insert for a: 5,6
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at Main$Wrappers.quadraticWrapper(Main.java:11)
at Main.main(Main.java:5)
如果您希望支持逗号作为小数分隔符,您需要以字符串形式读入并自行处理:
double c = commaNumberToDouble(s.nextLine());
private static double commaNumberToDouble(String input) {
return Double.parseDouble(input.replaceAll(",", "."));
}
% java Main
Insert for a: 4,5
insert for b: 24.6
insert for c: 1,2
[
-0.0492237147736808 -5.417442951892986 ]
推荐阅读
- python - 在“if”条件下使用变量时的 Python 3 NameError
- angular - 如果在特定文件夹中,由 Angular CLI 生成的测试会失败
- opencart - 是否有任何用于在 Opencart 中获取类别的 api
- c# - 为什么随着迭代次数的增加,比较“is”和“typeof”之间性能的基准测试结果会相反?
- c# - 从 .net core 中的 layout.cshtml 访问数据库
- c# - 什么时候应该更喜欢具有 Eager Loading 的普通成员而不是拥有的实体类型?
- php - 动态文件夹创建在 Codeigniter 中不起作用
- python - 如何匹配绳索中的多个参数?
- wicket - 检票口 JQWicket - 检票口
- php - 无法从 ASP Msxml2.ServerXMLHTTP.6.0 对象调用的 PHP 设置 cookie