我想使用Java的Scanner类来扫描由逗号分隔的double和int值。
以下Scanner input = new Scanner(System.in).useDelimiter("\\D");
只能扫描由,
分隔的int值,例如input = 1000,2,3
如何扫描由,
分隔的double和int值,例如input = 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语句。
以下是我的样例代码:
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 input = new Scanner(System.in).useDelimiter("[,\n]");
1000.00,3.25,1
,全部在一行作为一个输入。代码没有输出,因为在输入后代码停止运行了。我使用的是OpenJDK Java 7。 - j7aninput.nextLine();
仍然会挂起,并且在一行上输入1000.00,3.25,1
作为输入。 - j7an