【发布时间】:2017-02-22 23:39:34
【问题描述】:
我正在尝试使用 Java 的 Scanner 类来扫描以逗号分隔的 double 和 int 值。
下面的Scanner input = new Scanner(System.in).useDelimiter("\\D");只能扫描,分隔的int值。例如输入 = 1000,2,3
如何扫描以, 分隔的 double 和 int 值,例如输入 = 1000.00,3.25,5 或 100.00,2,3.5?
我尝试了以下方法,但它们似乎不起作用:
Scanner input = new Scanner(System.in).useDelimiter(",");
Scanner input = new Scanner(System.in).useDelimiter("\\,");
Scanner input = new Scanner(System.in).useDelimiter("[,]");
使用这些似乎会挂起代码。输入示例输入后,System.out.println 并未对扫描的 in 变量执行。
下面是我的示例代码:
import java.io.*;
import java.util.Scanner;
public class Solution {
public static void main(String args[] ) throws Exception {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
System.out.print("Enter your values: ");
// Scanner input = new Scanner(System.in).useDelimiter("\\D");
Scanner input = new Scanner(System.in).useDelimiter(",");
// Scanner input = new Scanner(System.in).useDelimiter("\\,");
// Scanner input = new Scanner(System.in).useDelimiter("[,]");
double investmentAmount = input.nextDouble();
double monthlyInterestRate = input.nextDouble() / 100 / 12;
double numberOfYears = input.nextDouble();
double duration = numberOfYears * 12;
double futureInvestmentValue = investmentAmount * Math.pow((1 + monthlyInterestRate), duration);
System.out.println(investmentAmount);
System.out.println(monthlyInterestRate);
System.out.println(numberOfYears);
System.out.println(duration);
System.out.println("Accumulated value is " + futureInvestmentValue);
}
}
找到解决方案
将 Scanner 行更新为以下内容似乎已修复它:
Scanner input = new Scanner(System.in).useDelimiter("[,\n]");
【问题讨论】:
-
您的代码对我来说运行良好。你的输入输出是什么?
-
@4castle,我的输入是
1000.00,3.25,1都在一行上作为一个输入。输入输入后代码挂起,因此没有输出。我在 OpenJDK Java 7 上 -
@eduardo-dennis 如果代码有效,我会的。它仍然与
input.nextLine();挂起,就像您在最后一个 nextDouble() 之后对其进行编码并在一行上输入1000.00,3.25,1作为输入一样。 -
@j7an 复制并粘贴我的确切代码,它按预期工作。
-
@eduardo-dennis 我已经这样做了
标签: java regex java.util.scanner delimiter