Я пытаюсь использовать класс сканера Java для сканирования в значениях double и int, разделенных запятыми.Java - Сканирование значений двойной и двойной запятой
Следующие 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]");
Ваш код работает хорошо для меня. Каков ваш ввод и вывод? – 4castle
@ 4castle, мой ввод '1000.00.3.25,1' все на одной строке как один вход. Нет выхода, поскольку код висит после ввода ввода. Я на OpenJDK Java 7 – j7an
@ eduardo-dennis Я бы сделал, если код работает. Он по-прежнему зависает с 'input.nextLine();' как то, как вы закодировали его после последнего nextDouble() и ввели '1000.00.3.25,1' в качестве ввода все в одной строке. – j7an