Как я могу прочитать ввод с консоли, используя класс Scanner в Java?



как я мог прочитать ввод с консоли с помощью Scanner класса? Что-то вроде этого:



System.out.println("Enter your username: ");
Scanner = input(); // Or something like this, I don't know the code


В принципе, все, что я хочу, это чтобы сканер читал вход для имени пользователя и назначал вход String переменной.

789   15  

15 ответов:

простой пример, чтобы проиллюстрировать, как java.util.Scanner работы будут читать одно целое число из System.in. Это действительно очень просто.

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

для получения имени пользователя я бы, вероятно, использовал sc.nextLine().

System.out.println("Enter your username: ");
Scanner scanner = new Scanner(System.in);
String username = scanner.nextLine();
System.out.println("Your username is " + username);

вы также можете использовать next(String pattern) если вы хотите больше контроля над входом, или просто проверить username переменной.

вы найдете дополнительную информацию об их реализации в документация API для java.util.Scanner

Scanner scan = new Scanner(System.in);
String myLine = scan.nextLine();

Чтение Данных С Консоли

  • BufferedReader синхронизируется, поэтому операции чтения в BufferedReader можно безопасно выполнять из нескольких потоков. Размер буфера может быть указан, или размер по умолчанию (8192) можно использовать. Значение по умолчанию достаточно велико для большинства целей.

    readLine ()"просто считывает данные по строкам из потока или источник. Строка считается завершенной любым из них: \n, \r (или) \r\n

  • Scanner разбивает его вход на токены с помощью шаблона разделителя, который по умолчанию соответствует пробелам (\s) и распознается Character.isWhitespace.

    "пока пользователь не введет данные, операция сканирования может блокироваться в ожидании ввода. "использовать Сканер (BUFFER_SIZE = 1024) если вы хотите проанализировать определенный тип токена из потока. "сканер, однако, не является потокобезопасным. Он должен быть внешне синхронизированы.

    next () " находит и возвращает следующий полный маркер из этого сканера. nextInt () " сканирует следующий маркер ввода как int.

код

String name = null;
int number;

java.io.BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
name = in.readLine(); // If the user has not entered anything, assume the default value.
number = Integer.parseInt(in.readLine()); // It reads only String,and we need to parse it.
System.out.println("Name " + name + "\t number " + number);

java.util.Scanner sc = new Scanner(System.in).useDelimiter("\s");
name = sc.next();  // It will not leave until the user enters data.
number = sc.nextInt(); // We can read specific data.
System.out.println("Name " + name + "\t number " + number);

// The Console class is not working in the IDE as expected.
java.io.Console cnsl = System.console();
if (cnsl != null) {
    // Read a line from the user input. The cursor blinks after the specified input.
    name = cnsl.readLine("Name: ");
    System.out.println("Name entered: " + name);
}

входы и выходы Поток

Reader Input:     Output:
Yash 777          Line1 = Yash 777
     7            Line1 = 7

Scanner Input:    Output:
Yash 777          token1 = Yash
                  token2 = 777

есть несколько способов получить ввод от пользователя. Вот в этой программе мы возьмем класс сканера для достижения поставленной задачи. Этот класс сканера входит в java.util, следовательно, первая строка программы импорт java.утиль.Сканер; что позволяет пользователю читать значения различных типов в Java. Строка инструкции import должна быть в первой строке программы java, и мы продолжим дальше для кода.

in.nextInt(); // It just reads the numbers

in.nextLine(); // It get the String which user enters

для доступа к методам в классе сканера создайте новый объект сканера как "in". Теперь мы используем один из его методов, то есть "следующий". Метод "next" возвращает строку текста, которую пользователь вводит на клавиатуре.

здесь я использую in.nextLine(); получить строку, которую вводит пользователь.

import java.util.Scanner;

class GetInputFromUser {
    public static void main(String args[]) {
        int a;
        float b;
        String s;

        Scanner in = new Scanner(System.in);
        System.out.println("Enter a string");
        s = in.nextLine();
        System.out.println("You entered string " + s);

        System.out.println("Enter an integer");
        a = in.nextInt();
        System.out.println("You entered integer " + a);

        System.out.println("Enter a float");
        b = in.nextFloat();
        System.out.println("You entered float " + b);
    }
}
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] arguments){
        Scanner input = new Scanner(System.in);

        String username;
        double age;
        String gender;
        String marital_status;
        int telephone_number;

        // Allows a person to enter his/her name   
        Scanner one = new Scanner(System.in);
        System.out.println("Enter Name:" );  
        username = one.next();
        System.out.println("Name accepted " + username);

        // Allows a person to enter his/her age   
        Scanner two = new Scanner(System.in);
        System.out.println("Enter Age:" );  
        age = two.nextDouble();
        System.out.println("Age accepted " + age);

        // Allows a person to enter his/her gender  
        Scanner three = new Scanner(System.in);
        System.out.println("Enter Gender:" );  
        gender = three.next();
        System.out.println("Gender accepted " + gender);

        // Allows a person to enter his/her marital status
        Scanner four = new Scanner(System.in);
        System.out.println("Enter Marital status:" );  
        marital_status = four.next();
        System.out.println("Marital status accepted " + marital_status);

        // Allows a person to enter his/her telephone number
        Scanner five = new Scanner(System.in);
        System.out.println("Enter Telephone number:" );  
        telephone_number = five.nextInt();
        System.out.println("Telephone number accepted " + telephone_number);
    }
}

вы можете сделать простую программу, чтобы запросить имя пользователя и распечатать все, что ответ использовать входы.

или попросите пользователя ввести два числа, и вы можете добавлять, умножать, вычитать или делить эти числа и печатать ответы для пользовательских входов так же, как поведение калькулятора.

так что вам нужен класс сканера. Вы должны import java.util.Scanner; и в коде нужно использовать:

Scanner input = new Scanner(System.in);

input - это имя переменной.

Scanner input = new Scanner(System.in);

System.out.println("Please enter your name: ");
s = input.next(); // Getting a String value

System.out.println("Please enter your age: ");
i = input.nextInt(); // Getting an integer

System.out.println("Please enter your salary: ");
d = input.nextDouble(); // Getting a double

посмотреть как это отличается: input.next();,i = input.nextInt();,d = input.nextDouble();

согласно строке, int и double меняются одинаково для остальных. Не забудьте инструкцию import в верхней части кода.

простой пример:

import java.util.Scanner;

public class Example
{
    public static void main(String[] args)
    {
        int number1, number2, sum;

        Scanner input = new Scanner(System.in);

        System.out.println("Enter First multiple");
        number1 = input.nextInt();

        System.out.println("Enter second multiple");
        number2 = input.nextInt();

        sum = number1 * number2;

        System.out.printf("The product of both number is %d", sum);
    }
}

проблема с входом.метод nextInt () - он только считывает значение int.

Так что при чтении следующей строки с помощью ввода.nextLine () вы получаете "\n", т. е. введите ключ. Так, чтобы пропустить это, вы должны добавить вход.nextLine ().

попробуйте вот так:

 System.out.print("Insert a number: ");
 int number = input.nextInt();
 input.nextLine(); // This line you have to add (it consumes the \n character)
 System.out.print("Text1: ");
 String text1 = input.nextLine();
 System.out.print("Text2: ");
 String text2 = input.nextLine();
  1. читать входные данные:

    Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();
    
  2. для чтения ввода при вызове метода с некоторыми аргументами / параметрами:

    if (args.length != 2) {
        System.err.println("Utilizare: java Grep <fisier> <cuvant>");
        System.exit(1);
    }
    try {
        grep(args[0], args[1]);
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
    
import java.util.*;

class Ss
{
    int id, salary;
    String name;

   void Ss(int id, int salary, String name)
    {
        this.id = id;
        this.salary = salary;
        this.name = name;
    }

    void display()
    {
        System.out.println("The id of employee:" + id);
        System.out.println("The name of employye:" + name);
        System.out.println("The salary of employee:" + salary);
    }
}

class employee
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);

        Ss s = new Ss(sc.nextInt(), sc.nextInt(), sc.nextLine());
        s.display();
    }
}

когда пользователь вводит его/ее username, проверьте правильность ввода также.

java.util.Scanner input = new java.util.Scanner(System.in);
String userName;
final int validLength = 6; // This is the valid length of an user name

System.out.print("Please enter the username: ");
userName = input.nextLine();

while(userName.length() < validLength) {

    // If the user enters less than validLength characters
    // ask for entering again
    System.out.println(
        "\nUsername needs to be " + validLength + " character long");

    System.out.print("\nPlease enter the username again: ");
    userName = input.nextLine();
}

System.out.println("Username is: " + userName);

вот полный класс, который выполняет необходимые операции:

import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        final int valid = 6;

        Scanner one = new Scanner(System.in);
        System.out.println("Enter your username: ");
        String s = one.nextLine();

        if (s.length() < valid) {
            System.out.println("Enter a valid username");
            System.out.println(
                "User name must contain " + valid + " characters");
            System.out.println("Enter again: ");
            s = one.nextLine();
        }

        System.out.println("Username accepted: " + s);

        Scanner two = new Scanner(System.in);
        System.out.println("Enter your age: ");
        int a = two.nextInt();
        System.out.println("Age accepted: " + a);

        Scanner three = new Scanner(System.in);
        System.out.println("Enter your sex: ");
        String sex = three.nextLine();
        System.out.println("Sex accepted: " + sex);
    }
}

вы можете передать этот код:

Scanner obj= new Scanner(System.in);
String s = obj.nextLine();

вы можете использовать класс сканера в Java

Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
System.out.println("String: " + s);

существует простой способ чтения с консоли.

пожалуйста, найдите ниже код:

import java.util.Scanner;

    public class ScannerDemo {

        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);

            // Reading of Integer
            int number = sc.nextInt();

            // Reading of String
            String str = sc.next();
        }
    }

для детального понимания, пожалуйста, обратитесь к приведенным ниже документам.

Doc

теперь поговорим о подробном понимании работы класса сканера:

public Scanner(InputStream source) {
    this(new InputStreamReader(source), WHITESPACE_PATTERN);
}

это конструктор для создания экземпляра сканера.

здесь мы проходим InputStream ссылка, которая не что иное, как а System.In. Здесь он открывает InputStream труба для консольного входа.

public InputStreamReader(InputStream in) {
    super(in);
    try {
        sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## Check lock object
    }
    catch (UnsupportedEncodingException e) {
        // The default encoding should always be available
        throw new Error(e);
    }
}

при прохождении System.in этот код открывает сокет для чтения с консоли.

Comments

    Ничего не найдено.