/ stop ([a-zA-Z]) + /
Будет соответствовать любому стоп-слову (остановка, остановка, остановка и т. д.)
Однако, если вы просто хотите совместить «стоп» в начале строки
/ ^ stop /
, выполните: D
Это прекрасно работает ....
int a = nextInt();
int b = nextInt();
int c = nextInt();
Или вы можете прочитать их в цикле
Я использую его все время на hackerearth
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String lines = br.readLine();
String[] strs = lines.trim().split("\\s+");
for (int i = 0; i < strs.length; i++) {
a[i] = Integer.parseInt(strs[i]);
}
Вероятно, вы ищете String.split (регулярное выражение String). Используйте "" для вашего регулярного выражения. Это даст вам массив строк, которые можно разобрать индивидуально в ints.
" "
в качестве регулярного выражения - плохая идея, так как это вызовет проблемы с вкладками и несколькими пробелами. Почти всегда, когда разделение пробелами использует «\\ s +», а не « & Quot ;.
– amit
7 May 2014 в 00:56
Вы хотите взять числа в качестве строки, а затем использовать String.split(" ")
, чтобы получить 3 числа.
String input = scanner.nextLine(); // get the entire line after the prompt
String[] numbers = input.split(" "); // split by spaces
Каждый индекс массива будет содержать строковое представление чисел, которое можно сделать int
s на Integer.parseInt()
Попробуйте это
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
if (in.hasNextInt())
System.out.println(in.nextInt());
else
in.next();
}
}
По умолчанию Сканер использует шаблон разделителя «\ p {javaWhitespace} +», который соответствует как минимум одному пробелу в качестве разделителя. вам не нужно ничего особенного делать.
Если вы хотите совместить пробелы (1 или более) или запятую, замените вызов Scanner этим
Scanner in = new Scanner(System.in).useDelimiter("[,\\s+]");
Используя это на многих сайтах кодирования:
Предположим, вам дано 3 тестовых примера с каждой строкой из 4 целых входов, разделенных пробелами 1 2 3 4
, 5 6 7 8
, 1 1 2 2
int t=3,i;
int a[]=new int[4];
Scanner scanner = new Scanner(System.in);
while(t>0)
{
for(i=0; i<4; i++){
a[i]=scanner.nextInt();
System.out.println(a[i]);
}
//USE THIS ARRAY A[] OF 4 Separated Integers Values for solving your problem
t--;
}
Scanner scanner = new Scanner(System.in);
String lines=scanner.nextLine();
String[] strs = lines.trim().split("\\s+");
Обратите внимание, что сначала необходимо обрезать (): trim().split("\\s+")
- в противном случае, например, расщепление a b c
сначала испустит две пустые строки int n=strs.length; //Calculating length gives number of integers
int a[]=new int[n];
for (int i=0; i<n; i++)
{
a[i] = Integer.parseInt(strs[i]); //Converting String_Integer to Integer
System.out.println(a[i]);
}
Вот как вы могли бы использовать сканер для обработки целых чисел, которые пользователь хотел бы ввести и поместить все значения в массив. Однако вы должны использовать это, только если не знаете, сколько целых чисел вводит пользователь. Если вы знаете, вы должны просто использовать Scanner.nextInt()
количество раз, когда вы хотели бы получить целое число.
import java.util.Scanner; // imports class so we can use Scanner object
public class Test
{
public static void main( String[] args )
{
Scanner keyboard = new Scanner( System.in );
System.out.print("Enter numbers: ");
// This inputs the numbers and stores as one whole string value
// (e.g. if user entered 1 2 3, input = "1 2 3").
String input = keyboard.nextLine();
// This splits up the string every at every space and stores these
// values in an array called numbersStr. (e.g. if the input variable is
// "1 2 3", numbersStr would be {"1", "2", "3"} )
String[] numbersStr = input.split(" ");
// This makes an int[] array the same length as our string array
// called numbers. This is how we will store each number as an integer
// instead of a string when we have the values.
int[] numbers = new int[ numbersStr.length ];
// Starts a for loop which iterates through the whole array of the
// numbers as strings.
for ( int i = 0; i < numbersStr.length; i++ )
{
// Turns every value in the numbersStr array into an integer
// and puts it into the numbers array.
numbers[i] = Integer.parseInt( numbersStr[i] );
// OPTIONAL: Prints out each value in the numbers array.
System.out.print( numbers[i] + ", " );
}
System.out.println();
}
}
Лучше получить всю строку в виде строки, а затем использовать StringTokenizer для получения чисел (используя пробел как разделитель), а затем проанализировать их как целые числа. Это будет работать для n числа целых чисел в строке.
Scanner sc = new Scanner(System.in);
List<Integer> l = new LinkedList<>(); // use linkedlist to save order of insertion
StringTokenizer st = new StringTokenizer(sc.nextLine(), " "); // whitespace is the delimiter to create tokens
while(st.hasMoreTokens()) // iterate until no more tokens
{
l.add(Integer.parseInt(st.nextToken())); // parse each token to integer and add to linkedlist
}
У сканера есть метод, называемый hasNext ():
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext())
{
System.out.println(scanner.nextInt());
}
Если вы знаете, сколько целых чисел вы получите, то вы можете использовать метод nextInt()
Например
Scanner sc = new Scanner(System.in);
int[] integers = new int[3];
for(int i = 0; i < 3; i++)
{
integers[i] = sc.nextInt();
}
Использование BufferedReader -
StringTokenizer st = new StringTokenizer(buf.readLine());
while(st.hasMoreTokens())
{
arr[i++] = Integer.parseInt(st.nextToken());
}