Hoe krijg ik de gebruikersinvoer in Java?

Ik heb geprobeerd een rekenmachine te maken, maar ik krijg het niet werkend omdat ik niet weet hoe ik gebruikersinvoer kan krijgen.

Hoe krijg ik de gebruikersinvoer in Java?


Antwoord 1, autoriteit 100%

U kunt een van de volgende opties gebruiken op basis van de vereisten.

Scannerklas

import java.util.Scanner; 
//...
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();

BufferedReaderen InputStreamReaderlessen

import java.io.BufferedReader;
import java.io.InputStreamReader;
//...
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int i = Integer.parseInt(s);

DataInputStreamklas

import java.io.DataInputStream;
//...
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();

De readLinemethode van de DataInputStreamklasse is verouderd. Om String-waarde te krijgen, moet u de vorige oplossing gebruiken met BufferedReader


Consoleklas

import java.io.Console;
//...
Console console = System.console();
String s = console.readLine();
int i = Integer.parseInt(console.readLine());

Blijkbaar werkt deze methode niet goed in sommige IDE’s.


Antwoord 2, autoriteit 94%

Een van de eenvoudigste manieren is om een Scanner-object als volgt te gebruiken:

import java.util.Scanner;
Scanner reader = new Scanner(System.in);  // Reading from System.in
System.out.println("Enter a number: ");
int n = reader.nextInt(); // Scans the next token of the input as an int.
//once finished
reader.close();

Antwoord 3, autoriteit 12%

U kunt de Scannerklasse of de Console-klasse

Console console = System.console();
String input = console.readLine("Enter input:");

Antwoord 4, autoriteit 6%

U kunt gebruikersinvoer verkrijgen met BufferedReader.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String accStr;  
System.out.println("Enter your Account number: ");
accStr = br.readLine();

Het slaat een StringWaarde in accStropslaan, zodat u deze moet ontleden op een intmet Integer.parseInt.

int accInt = Integer.parseInt(accStr);

5, Autoriteit 5%

Hier kunt u de toetsenbordinvoer krijgen:

Scanner scanner = new Scanner (System.in);
System.out.print("Enter your name");  
name = scanner.next(); // Get what the user types.

Antwoord 6, autoriteit 4%

De beste twee opties zijn BufferedReaderen Scanner.

De meest gebruikte methode is Scanneren ik geef er persoonlijk de voorkeur aan vanwege de eenvoud en gemakkelijke implementatie, evenals het krachtige hulpprogramma om tekst in primitieve gegevens te ontleden.

Voordelen van het gebruik van de scanner

  • Eenvoudig te gebruiken Scannerklasse
  • Eenvoudige invoer van getallen (int, short, byte, float, long en double)
  • Uitzonderingen zijn niet aangevinkt, wat handiger is. Het is aan de programmeur om beschaafd te zijn en de uitzonderingen te specificeren of te vangen.
  • Kan regels, spaties en door regex gescheiden tokens lezen

Voordelen van BufferedInputStream


Over het algemeen heeft elke invoermethode verschillende doelen.

  • Als u een grote hoeveelheid gegevens invoert, is BufferedReadermisschien
    beter voor jou

  • Als u veel cijfers invoert, doet Scannerautomatisch parseren
    wat erg handig is

Voor meer basisgebruik zou ik de Scanneraanraden, omdat deze gemakkelijker te gebruiken is en gemakkelijker om programma’s mee te schrijven. Hier is een snel voorbeeld van hoe u een Scannermaakt. Ik zal hieronder een uitgebreid voorbeeld geven van het gebruik van de Scanner

Scanner scanner = new Scanner (System.in); // create scanner
System.out.print("Enter your name");       // prompt user
name = scanner.next();                     // get user input

(Voor meer informatie over BufferedReaderzie Hoe om een BufferedReaderte gebruiken en zie Leesregels van Chars)


java.util.Scanner

import java.util.InputMismatchException; // import the exception catching class
import java.util.Scanner; // import the scanner class
public class RunScanner {
    // main method which will run your program
    public static void main(String args[]) {
        // create your new scanner
        // Note: since scanner is opened to "System.in" closing it will close "System.in". 
        // Do not close scanner until you no longer want to use it at all.
        Scanner scanner = new Scanner(System.in);
        // PROMPT THE USER
        // Note: when using scanner it is recommended to prompt the user with "System.out.print" or "System.out.println"
        System.out.println("Please enter a number");
        // use "try" to catch invalid inputs
        try {
            // get integer with "nextInt()"
            int n = scanner.nextInt();
            System.out.println("Please enter a decimal"); // PROMPT
            // get decimal with "nextFloat()"
            float f = scanner.nextFloat();
            System.out.println("Please enter a word"); // PROMPT
            // get single word with "next()"
            String s = scanner.next();
            // ---- Note: Scanner.nextInt() does not consume a nextLine character /n 
            // ---- In order to read a new line we first need to clear the current nextLine by reading it:
            scanner.nextLine(); 
            // ----
            System.out.println("Please enter a line"); // PROMPT
            // get line with "nextLine()"
            String l = scanner.nextLine();
            // do something with the input
            System.out.println("The number entered was: " + n);
            System.out.println("The decimal entered was: " + f);
            System.out.println("The word entered was: " + s);
            System.out.println("The line entered was: " + l);
        }
        catch (InputMismatchException e) {
            System.out.println("\tInvalid input entered. Please enter the specified input");
        }
        scanner.close(); // close the scanner so it doesn't leak
    }
}

Opmerking: andere klassen zoals Consoleen DataInputStreamzijn ook haalbare alternatieven.

Consoleheeft een aantal krachtige functies, zoals de mogelijkheid om wachtwoorden te lezen, is echter niet beschikbaar in alle IDE’s (zoals Eclipse). De reden dat dit gebeurt, is omdat Eclipse uw toepassing uitvoert als een achtergrondproces en niet als een proces op het hoogste niveau met een systeemconsole. Hier is een linknaar een handig voorbeeld over het implementeren van de Consoleklasse.

DataInputStreamwordt voornamelijk gebruikt voor het lezen van invoer als een primitief gegevenstype, uit een onderliggende invoerstroom, op een machine-onafhankelijke manier. DataInputStreamwordt meestal gebruikt voor het lezen van binaire gegevens. Het biedt ook gemaksmethoden voor het lezen van bepaalde gegevenstypen. Het heeft bijvoorbeeld een methode om een UTF-tekenreeks te lezen die een willekeurig aantal regels kan bevatten.

Het is echter een meer gecompliceerde klasse en moeilijker te implementeren, dus niet aanbevolen voor beginners. Hier is een linknaar een handig voorbeeld van het implementeren van een DataInputStream.


Antwoord 7, autoriteit 2%

Om een regel of een tekenreeks te lezen, kunt u een BufferedReader-object gebruiken in combinatie met een InputStreamReader-object als volgt:

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
String inputLine = bufferReader.readLine();

Antwoord 8, autoriteit 2%

Hier vraagt het programma de gebruiker om een getal in te voeren. Daarna drukt het programma de cijfers van het getal en de som van de cijfers af.

import java.util.Scanner;
public class PrintNumber {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = 0;
        int sum = 0;
        System.out.println(
            "Please enter a number to show its digits");
        num = scan.nextInt();
        System.out.println(
            "Here are the digits and the sum of the digits");
        while (num > 0) {
            System.out.println("==>" + num % 10);
            sum += num % 10;
            num = num / 10;   
        }
        System.out.println("Sum is " + sum);            
    }
}

9, Autoriteit 2%

Hier is uw programma uit de vraag met java.util.Scanner:

import java.util.Scanner;
public class Example {
    public static void main(String[] args) {
        int input = 0;
        System.out.println("The super insano calculator");
        System.out.println("enter the corrosponding number:");
        Scanner reader3 = new Scanner(System.in);
        System.out.println(
            "1. Add | 2. Subtract | 3. Divide | 4. Multiply");
        input = reader3.nextInt();
        int a = 0, b = 0;
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter the first number");
        // get user input for a
        a = reader.nextInt();
        Scanner reader1 = new Scanner(System.in);
        System.out.println("Enter the scend number");
        // get user input for b
        b = reader1.nextInt();
        switch (input){
            case 1:  System.out.println(a + " + " + b + " = " + add(a, b));
                     break;
            case 2:  System.out.println(a + " - " + b + " = " + subtract(a, b));
                     break;
            case 3:  System.out.println(a + " / " + b + " = " + divide(a, b));
                     break;
            case 4:  System.out.println(a + " * " + b + " = " + multiply(a, b));
                     break;
            default: System.out.println("your input is invalid!");
                     break;
        }
    }
    static int      add(int lhs, int rhs) { return lhs + rhs; }
    static int subtract(int lhs, int rhs) { return lhs - rhs; }
    static int   divide(int lhs, int rhs) { return lhs / rhs; }
    static int multiply(int lhs, int rhs) { return lhs * rhs; }
}

Antwoord 10

Scanner input=new Scanner(System.in);
int integer=input.nextInt();
String string=input.next();
lange longInteger=input.nextLong();

Antwoord 11

Nog één extra detail. Als u geen geheugen-/bronlek wilt riskeren, moet u de scannerstream sluiten als u klaar bent:

myScanner.close();

Merk op dat java 1.7 en later dit als een compileerwaarschuwing zien (vraag niet hoe ik dat weet 🙂


Antwoord 12

Scanner input = new Scanner(System.in);
String inputval = input.next();

Antwoord 13

import java.util.Scanner; 
class Daytwo{
    public static void main(String[] args){
        System.out.println("HelloWorld");
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter the number ");
        int n = reader.nextInt();
        System.out.println("You entered " + n);
    }
}

Antwoord 14

Hier is een meer ontwikkelde versie van het geaccepteerde antwoord dat inspeelt op twee veelvoorkomende behoeften:

  • Herhaaldelijk gebruikersinvoer verzamelen totdat een exit-waarde is ingevoerd
  • omgaan met ongeldige invoerwaarden (niet-gehele getallen in dit voorbeeld)

code

package inputTest;
import java.util.Scanner;
import java.util.InputMismatchException;
public class InputTest {
    public static void main(String args[]) {
        Scanner reader = new Scanner(System.in);
        System.out.println("Please enter integers. Type 0 to exit.");
        boolean done = false;
        while (!done) {
            System.out.print("Enter an integer: ");
            try {
                int n = reader.nextInt();
                if (n == 0) {
                    done = true;
                }
                else {
                    // do something with the input
                    System.out.println("\tThe number entered was: " + n);
                }
            }
            catch (InputMismatchException e) {
                System.out.println("\tInvalid input type (must be an integer)");
                reader.nextLine();  // Clear invalid input from scanner buffer.
            }
        }
        System.out.println("Exiting...");
        reader.close();
    }
}

voorbeeld

Please enter integers. Type 0 to exit.
Enter an integer: 12
    The number entered was: 12
Enter an integer: -56
    The number entered was: -56
Enter an integer: 4.2
    Invalid input type (must be an integer)
Enter an integer: but i hate integers
    Invalid input type (must be an integer)
Enter an integer: 3
    The number entered was: 3
Enter an integer: 0
Exiting...

Merk op dat zonder nextLine(), de slechte invoer dezelfde uitzondering herhaaldelijk zal activeren in een oneindige lus. Misschien wilt u in plaats daarvan next()gebruiken, afhankelijk van de omstandigheden, maar weet dat invoer zoals this has spacesmeerdere uitzonderingen zal genereren.


Antwoord 15

Voeg throws IOExceptiontoe naast main(), dan

DataInputStream input = new DataInputStream(System.in);
System.out.print("Enter your name");
String name = input.readLine();

Antwoord 16

Het is heel eenvoudig om invoer in Java te krijgen, het enige wat u hoeft te doen is:

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 17

import java.util.Scanner;
public class Myapplication{
     public static void main(String[] args){
         Scanner in = new Scanner(System.in);
         int a;
         System.out.println("enter:");
         a = in.nextInt();
         System.out.println("Number is= " + a);
     }
}

Antwoord 18

U kunt op deze manier gebruikersinvoer krijgen met behulp van een BufferedReader:

   InputStreamReader inp = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(inp);
    // you will need to import these things.

Zo pas je ze toe

   String name = br.readline(); 

Dus wanneer de gebruiker zijn naam in de console typt, zal “String name” die informatie opslaan.

Als het een nummer is dat u wilt opslaan, ziet de code er als volgt uit:

   int x = Integer.parseInt(br.readLine());

Hopelijk helpt dit!


Antwoord 19

Kan zoiets zijn…

public static void main(String[] args) {
    Scanner reader = new Scanner(System.in);
    System.out.println("Enter a number: ");
    int i = reader.nextInt();
    for (int j = 0; j < i; j++)
        System.out.println("I love java");
}

Antwoord 20

Dit is een eenvoudige code die de functie System.in.read()gebruikt. Deze code schrijft gewoon wat er is getypt. Je kunt de while-lus verwijderen als je maar één keer invoer wilt, en je kunt antwoorden opslaan in een tekenreeks als je dat wilt.

package main;
import java.io.IOException;
public class Root 
{   
    public static void main(String[] args)
    {
        new Root();
    }
    public Root()
    {
        while(true)
        {
            try
            {
                for(int y = 0; y < System.in.available(); ++y)
                { 
                    System.out.print((char)System.in.read()); 
                }
            }
            catch(IOException ex)
            {
                ex.printStackTrace(System.out);
                break;
            }
        }
    }   
}    

Antwoord 21

Ik vind het volgende leuk:

public String readLine(String tPromptString) {
    byte[] tBuffer = new byte[256];
    int tPos = 0;
    System.out.print(tPromptString);
    while(true) {
        byte tNextByte = readByte();
        if(tNextByte == 10) {
            return new String(tBuffer, 0, tPos);
        }
        if(tNextByte != 13) {
            tBuffer[tPos] = tNextByte;
            ++tPos;
        }
    }
}

en ik zou bijvoorbeeld doen:

String name = this.readLine("What is your name?")

Antwoord 22

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        System.out.println("Welcome to the best program in the world! ");
        while (true) {
            System.out.print("Enter a query: ");
            Scanner scan = new Scanner(System.in);
            String s = scan.nextLine();
            if (s.equals("q")) {
                System.out.println("The program is ending now ....");
                break;
            } else  {
                System.out.println("The program is running...");
            }
        }
    }
}

Antwoord 23

import java.util.Scanner;
public class userinput {
    public static void main(String[] args) {        
        Scanner input = new Scanner(System.in);
        System.out.print("Name : ");
        String name = input.next();
        System.out.print("Last Name : ");
        String lname = input.next();
        System.out.print("Age : ");
        byte age = input.nextByte();
        System.out.println(" " );
        System.out.println(" " );
        System.out.println("Firt Name: " + name);
        System.out.println("Last Name: " + lname);
        System.out.println("      Age: " + age);
    }
}

24

class ex1 {    
    public static void main(String args[]){
        int a, b, c;
        a = Integer.parseInt(args[0]);
        b = Integer.parseInt(args[1]);
        c = a + b;
        System.out.println("c = " + c);
    }
}
// Output  
javac ex1.java
java ex1 10 20 
c = 30

25

Toetsenbordinvoer met behulp van scanner is mogelijk, zoals anderen hebben gepost. Maar in deze sterk grafische tijden is het zinloos een rekenmachine zonder een grafische gebruikersinterface (GUI).

In moderne Java betekent dit met behulp van een Javafx-slepen-en-drop-tool zoals scene bouwer om een ​​GUI te leggen die lijkt op de console van een rekenmachine.
Merk op dat het gebruik van Scene Builder intuïtief eenvoudig is en geen extra Java-vaardigheid vereist voor zijn evenementenhandlers dat wat u al heeft.

Voor gebruikersinvoer, moet u een breed tekstveld bovenaan de GUI-console hebben.

Hier komt de gebruiker de cijfers binnen waarvan zij functies willen uitvoeren.
Onder het Textfield zou u een reeks functieknoppen doen die basic doen (d.w.z. voeg / aftrekken / vermenigvuldigen / verdelen en geheugen / terugroeping / wissen) functies.
Zodra de GUI is gelaagd, kunt u vervolgens de referenties ‘Controller’ toevoegen die elke knop-functie koppelen aan de Java-implementatie, bijvoorbeeld een oproep tot methode in de controllerklasse van uw project.

Deze video is een beetje oud maar laat nog steeds zien hoe gemakkelijk te maken scene is gebruik.


26

U kunt de gebruiker invoeren met Scanner. U kunt de juiste invoervalidatie gebruiken met behulp van de juiste methoden voor verschillende gegevenstypen zoals next()voor Stringof nextInt()voor Integer.

import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
//reads the input until it reaches the space
System.out.println("Enter a string: ");
String str = scanner.next();
System.out.println("str = " + str);
//reads until the end of line
String aLine = scanner.nextLine();
//reads the integer
System.out.println("Enter an integer num: ");
int num = scanner.nextInt();
System.out.println("num = " + num);
//reads the double value
System.out.println("Enter a double: ");
double aDouble = scanner.nextDouble();
System.out.println("double = " + aDouble);
//reads the float value, long value, boolean value, byte and short
double aFloat = scanner.nextFloat();
long aLong = scanner.nextLong();
boolean aBoolean = scanner.nextBoolean();
byte aByte = scanner.nextByte();
short aShort = scanner.nextShort();
scanner.close();

27

De eenvoudigste manier om de gebruikersinvoer te krijgen zou zijn om scanner te gebruiken. Hier is een voorbeeld van hoe het zou worden gebruikt:

import java.util.Scanner;
public class main {
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
int a;
String b;
System.out.println("Type an integer here: ");
a=sc.nextInt();
System.out.println("Type anything here:");
b=sc.nextLine();

De coderegel import java.util.Scanner;vertelt het programma dat de programmeur gebruikersinvoer in zijn code zal gebruiken. Zoals het zegt, importeert het het scannerhulpprogramma. Scanner sc=new Scanner(System.in);vertelt het programma om de gebruikersinvoer te starten. Nadat je dat hebt gedaan, moet je een string of integer maken zonder waarde, en die vervolgens in de regel a=sc.nextInt();of a=sc.nextLine();. Dit geeft de variabelen de waarde van de gebruikersinvoer. Dan kun je het gebruiken in je code. Ik hoop dat dit helpt.


Antwoord 28

Met JOptionPane kunt u dit bereiken.

Int a =JOptionPane.showInputDialog(null,"Enter number:");

Other episodes