Как вводить пользовательские входы на одной строке в java [duplicate]

  / stop ([a-zA-Z]) + /  

Будет соответствовать любому стоп-слову (остановка, остановка, остановка и т. д.)

Однако, если вы просто хотите совместить «стоп» в начале строки

  / ^ stop /  

, выполните: D

17
задан Steven 7 May 2014 в 00:52
поделиться

11 ответов

Это прекрасно работает ....

int a = nextInt(); int b = nextInt(); int c = nextInt();

Или вы можете прочитать их в цикле

0
ответ дан 2rd_7 17 August 2018 в 09:42
поделиться

Я использую его все время на 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]);
    }
14
ответ дан Abhijith S 17 August 2018 в 09:42
поделиться
  • 1
    Это то, чего я действительно хочу ... Хороший. (Y), – Abhijith S 2 July 2018 в 12:47
  • 2
    Я только что написал текстовый файл этого кода ... Чтобы использовать его в онлайн-задачах -_- – Ashish sah 5 July 2018 в 06:45

Вероятно, вы ищете String.split (регулярное выражение String). Используйте "" для вашего регулярного выражения. Это даст вам массив строк, которые можно разобрать индивидуально в ints.

0
ответ дан adv12 17 August 2018 в 09:42
поделиться
  • 1
    Нет смысла использовать регулярное выражение здесь, просто прочитайте некоторые ints непосредственно из потока с помощью Scanner. Кроме того, использование " " в качестве регулярного выражения - плохая идея, так как это вызовет проблемы с вкладками и несколькими пробелами. Почти всегда, когда разделение пробелами использует «\\ s +», а не « & Quot ;. – amit 7 May 2014 в 00:56
  • 2
    @amit Не могли бы вы мне помочь? – Steven 7 May 2014 в 01:28

Вы хотите взять числа в качестве строки, а затем использовать 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()

6
ответ дан Deepak Sharma 17 August 2018 в 09:42
поделиться

Попробуйте это

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+]");
8
ответ дан E.A. 17 August 2018 в 09:42
поделиться

Используя это на многих сайтах кодирования:

  • СЛУЧАЙ 1: КОГДА ЧИСЛО ЦЕЛЕЙ ВХОДА В КАЖДУЮ ЛИНИЮ ДАЛЕЕ

Предположим, вам дано 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--;
        }
  • CASE 2: КОГДА ЧИСЛО ИНТЕГРЕЙ в каждой строке НЕ ДАЕТ
        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]);
        }
    
0
ответ дан Imene Noomene 17 August 2018 в 09:42
поделиться

Вот как вы могли бы использовать сканер для обработки целых чисел, которые пользователь хотел бы ввести и поместить все значения в массив. Однако вы должны использовать это, только если не знаете, сколько целых чисел вводит пользователь. Если вы знаете, вы должны просто использовать 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();
    }
}
2
ответ дан Mostafa 17 August 2018 в 09:42
поделиться

Лучше получить всю строку в виде строки, а затем использовать 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

    }
0
ответ дан rogue_leader 17 August 2018 в 09:42
поделиться

У сканера есть метод, называемый hasNext ():

    Scanner scanner = new Scanner(System.in);

    while(scanner.hasNext())
    {
        System.out.println(scanner.nextInt());
    }
7
ответ дан sendon1982 17 August 2018 в 09:42
поделиться
  • 1
    Он постоянно запрашивает ввод. Как остановить после окончания строки? – Aravin 24 November 2016 в 14:07
  • 2
    Добавить System.exit (); в конце, где вы хотите выйти – sendon1982 26 November 2016 в 08:59

Если вы знаете, сколько целых чисел вы получите, то вы можете использовать метод nextInt()

Например

Scanner sc = new Scanner(System.in);
int[] integers = new int[3];
for(int i = 0; i < 3; i++)
{
    integers[i] = sc.nextInt();
}
3
ответ дан Sk1X1 17 August 2018 в 09:42
поделиться

Использование BufferedReader -

StringTokenizer st = new StringTokenizer(buf.readLine());

while(st.hasMoreTokens())
{
  arr[i++] = Integer.parseInt(st.nextToken());
}
0
ответ дан Varun Chaudhary 17 August 2018 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: