#java
#java #java.util.scanner #разделитель
Вопрос:
import java.io.*;
import java.util.*;
class usingDelimiters
{
public static void main(String args[])
{
Scanner dis=new Scanner(System.in);
int a,b,c;
a=dis.nextInt();
b=dis.nextInt();
c=dis.nextInt();
System.out.println("a=" a);
System.out.println("b=" b);
System.out.println("c=" c);
}
}
Эта программа работает нормально, когда мои входные данные равны 1 2 3 (разделены пробелом)
Но как изменить мою программу, если мои входные данные равны 1,2,3 (разделены запятыми)
Комментарии:
1. целые числа, разделенные запятыми == значения, разделенные запятыми == CSV == использовать OpenCSV? Вручную нормально, если это игрушечный код, но для серьезной работы рассмотрите возможность использования OpenCSV.
Ответ №1:
Вы можете использовать разделитель для нечисловых элементов, который будет помечать любую не цифру как разделитель.
Например:
dis.useDelimiter("\D");
useDelimiter
Метод принимает a Pattern
или String
представление a Pattern
.
Полный пример:
Scanner dis=new Scanner(System.in);
dis.useDelimiter("\D");
int a,b,c;
a=dis.nextInt();
b=dis.nextInt();
c=dis.nextInt();
System.out.println(a " " b " " c);
dis.close();
Входные данные (либо или)
1,2,3
1 2 3
Вывод
1 2 3
Примечание
- Не забудьте
close
свойScanner
! - Смотрите API для
Pattern
s для дополнительного удовольствия, разделяющего ваш ввод.
Ответ №2:
вы можете использовать метод nextLine для чтения строки и использовать метод split для разделения запятой следующим образом:
public static void main(String args[])
{
Scanner dis=new Scanner(System.in);
int a,b,c;
String line;
String[] lineVector;
line = dis.nextLine(); //read 1,2,3
//separate all values by comma
lineVector = line.split(",");
//parsing the values to Integer
a=Integer.parseInt(lineVector[0]);
b=Integer.parseInt(lineVector[1]);
c=Integer.parseInt(lineVector[2]);
System.out.println("a=" a);
System.out.println("b=" b);
System.out.println("c=" c);
}
Этот метод будет работать только с 3 значениями, разделенными запятой.
Если вам нужно изменить количество значений, вы можете использовать цикл для получения значений из вектора.