Hoe kan ik input van de console lezen met behulp van de scannersklasse in Java?

Hoe kan ik invoer van de console lezen met behulp van de Scannerklasse? Zoiets als volgt:

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

Kortom, alles wat ik wil is dat de scanner een invoer voor de gebruikersnaam heeft gelezen en de invoer toewijzen aan een Stringvariabele.


Antwoord 1, Autoriteit 100%

Een eenvoudig voorbeeld om te illustreren hoe java.util.Scannerwerkt zou een enkel geheel getal van System.Inlezen. Het is echt vrij eenvoudig.

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

Om een ​​gebruikersnaam op te halen, zou ik waarschijnlijk 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);

U kunt ook next(String pattern)Als u meer controle over de ingang wilt of gewoon de usernamevariabele wilt valideren.

U vindt meer informatie over hun implementatie in de API-documentatie voor java.util.Scanner


Antwoord 2, Autoriteit 10%

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

Antwoord 3, autoriteit 7%

Gegevens uit de console lezen

  • BufferedReaderis gesynchroniseerd, dus leesbewerkingen op een BufferedReader kunnen veilig worden gedaan vanuit meerdere threads. De buffergrootte kan worden opgegeven, of de standaardgrootte (8192) kan worden gebruikt. De standaardwaarde is groot genoeg voor de meeste doeleinden.

    readLine()«lees gegevens regel voor regel uit de stream of bron. Een regel wordt als beëindigd beschouwd door: \n, \r (of) \r\n

  • Scannerbreekt de invoer op in tokens met behulp van een scheidingstekenpatroon, dat standaard overeenkomt met witruimte (\s) en wordt herkend door Character.isWhitespace.

    «Totdat de gebruiker gegevens invoert, kan de scanbewerking blokkeren, wachtend op invoer.
    «Gebruikscanner (buffer_size = 1024 ) Als u een specifiek type token uit een stroom wilt ontleden.
    «Een scanner is echter geen draad veilig. Het moet extern worden gesynchroniseerd.

    Volgende () «vindt en retourneert het volgende volledige token uit deze scanner.
    Nextint () «Scant het volgende token van de invoer als een int.

code

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);
}

Ingangen en uitgangen van stream

Reader Input:     Output:
Yash 777          Line1 = Yash 777
     7            Line1 = 7
Scanner Input:    Output:
Yash 777          token1 = Yash
                  token2 = 777

Antwoord 4, Autoriteit 5%

Er is een probleem met de methode input.nextInt() – deze leest alleen de waarde int.

Dus bij het lezen van de volgende regel met input.nextLine() ontvang je “\n”, d.w.z. de Enter-toets. Dus om dit over te slaan moet je de input.nextLine() toevoegen.

Probeer het zo:

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();

Antwoord 5, autoriteit 3%

Er zijn verschillende manieren om input van de gebruiker te krijgen. Hier in dit programma zullen we de Scanner-klasse nemen om de taak te volbrengen. Deze Scanner-klasse valt onder java.util, vandaar dat de eerste regel van het programma java.util.Scanner importeert;waarmee de gebruiker waarden van verschillende typen in Java kan lezen . De regel met de importinstructie zou in de eerste regel van het Java-programma moeten staan, en we gaan verder voor code.

in.nextInt(); // It just reads the numbers
in.nextLine(); // It get the String which user enters

Als u toegang wilt tot methoden in de klasse Scanner, maakt u een nieuw scannerobject als “in”. Nu gebruiken we een van zijn methoden, namelijk “volgende”. De “volgende” methode haalt de tekstreeks op die een gebruiker op het toetsenbord invoert.

Hier gebruik ik in.nextLine();om de string te krijgen die de gebruiker invoert.

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);
    }
}

Antwoord 6, autoriteit 3%

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);
    }
}

Antwoord 7, autoriteit 2%

Je kunt een eenvoudig programma maken om de naam van de gebruiker te vragen en af te drukken, ongeacht de invoer van het antwoord.

Of vraag de gebruiker om twee getallen in te voeren en je kunt die getallen optellen, vermenigvuldigen, aftrekken of delen en de antwoorden voor gebruikersinvoer afdrukken, net als het gedrag van een rekenmachine.

Dus daar heb je de Scanner-klasse nodig. Je moet import java.util.Scanner;importeren, en in de code die je moet gebruiken:

Scanner input = new Scanner(System.in);

inputis een variabelenaam.

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

Zie hoe dit verschilt: input.next();, i = input.nextInt();, d = input.nextDouble();

Volgens een string variëren int en een double voor de rest op dezelfde manier. Vergeet de importverklaring bovenaan uw code niet.


Antwoord 8

Een eenvoudig voorbeeld:

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);
    }
}

Antwoord 9

Als de gebruiker zijn/haar usernameinvoert, controleer dan ook op geldige invoer.

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);

Antwoord 10

  1. Invoer lezen:

    Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();
    
  2. Invoer lezen wanneer u een methode aanroept met enkele argumenten/parameters:

    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());
    }
    

Antwoord 11

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();
    }
}

Antwoord 12

Hier is de volledige klas die de vereiste werking uitvoert:

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);
    }
}

Antwoord 13

Er is een eenvoudige manier om uit de console te lezen.

Vind de onderstaande code:

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();
        }
    }

Raadpleeg de onderstaande documenten voor een gedetailleerd begrip.

Doc

Laten we het nu hebben over het gedetailleerde begrip van de werking van de Scanner-klasse:

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

Dit is de constructor voor het maken van de Scanner-instantie.

Hier geven we de InputStream-referentie door die niets anders is dan een System.In. Hier opent het de InputStreamPipe voor console-invoer.

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);
    }
}

Door de System.in door te geven, opent deze code de socket voor lezen vanaf de console.


Antwoord 14

U kunt deze code gebruiken:

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

Antwoord 15

U kunt de Scanner-klasse in Java gebruiken

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

Other episodes