Lees en schrijf gebruikersinvoer in Java

1. Inleiding

In deze korte tutorial zullen we demonstreren verschillende manieren om een ​​console te gebruiken voor gebruikersinvoer en -uitvoer in Java.

We zullen een paar methoden van de Scanner class voor het afhandelen van invoer, en dan zullen we enkele eenvoudige uitvoer laten zien met behulp van System.out.

Ten slotte zullen we zien hoe u de Troosten class, beschikbaar sinds Java 6, voor zowel console-invoer als uitvoer.

2. Voorlezen uit System.in

Voor onze eerste voorbeelden zullen we gebruik de Scanner klasse in de java.util pakket om de input van te verkrijgen System.in - de "standaard" invoerstroom:

Scannerscanner = nieuwe scanner (System.in);

Laten we gebruik de nextLine () methode om een ​​hele regel invoer te lezen als een Draad en ga door naar de volgende regel:

TekenreeksnaamAchternaam = scanner.nextLine ();

We kunnen ook gebruik de De volgende() methode om het volgende invoertoken op te halen uit de stroom:

String geslacht = scanner.next ();

Als we numerieke invoer verwachten, kunnen we dat gebruik volgendeInt () om de volgende invoer als een int primitief, en evenzo kunnen we gebruik volgendeDubbel () om een ​​variabele van het type te krijgen dubbele:

int age = scanner.nextInt (); dubbele hoogte = scanner.nextDouble ();

De Scanner klasse biedt ook hasNext_Prefix () methoden die terugkeren waar als het volgende token kan worden geïnterpreteerd als een overeenkomstig gegevenstype.

We kunnen bijvoorbeeld gebruiken hasNextInt ()methode om te controleren of het volgende token kan worden geïnterpreteerd als een geheel getal:

while (scanner.hasNextInt ()) {int nmbr = scanner.nextInt (); // ...}

We kunnen ook de hasNext (patroonpatroon) methode om controleer of het volgende invoertoken overeenkomt met een patroon:

if (scanner.hasNext (Pattern.compile ("www.baeldung.com"))) {// ...}

Naast het gebruik van de Scanner klasse, we kunnen ook een InvoerStreamReader met System.in om de input van de console te krijgen:

BufferedReader buffReader = nieuwe BufferedReader (nieuwe InputStreamReader (System.in));

En dan kunnen we de invoer lezen en deze parseren tot een geheel getal:

int i = Integer.parseInt (buffReader.readLine ()); 

3. Schrijven naar System.out

Voor console-uitvoer kunnen we System.out - een instantie van de PrintStream klasse, dat is een soort van OutputStream.

In ons voorbeeld gebruiken we console-uitvoer om een ​​prompt voor gebruikersinvoer te geven en een laatste bericht aan een gebruiker weer te geven.

Laten we gebruik de println () methode om een Draad en beëindig de lijn:

System.out.println ("Voer uw naam en achternaam in:");

Afwisselend kunnen we gebruik de afdrukken() methode, die op dezelfde manier werkt als println (), maar zonder de lijn te beëindigen:

System.out.print ("Have a good"); System.out.print ("een!");

4. Gebruik de Troosten Klasse voor input en output

In JDK 6 en hoger kunnen we de Troosten klas van java.io pakket om van te lezen en naar de console te schrijven.

Om een Troosten object, we zullen bellen System.console ():

Consoleconsole = System.console ();

Laten we vervolgens de Lees regel() methode van de Troosten klas naar schrijf een regel naar de console en lees dan een regel van de console:

String progLanguauge = console.readLine ("Voer uw favoriete programmeertaal in:"); 

Als we gevoelige informatie moeten lezen, zoals een wachtwoord, kunnen we de readPassword () methode om vraag een gebruiker om een ​​wachtwoord en lees het wachtwoord van de console met echo uitgeschakeld:

char [] pass = console.readPassword ("Om te voltooien, voer het wachtwoord in:"); 

We kunnen ook gebruik de Troosten class om uitvoer naar de console te schrijven, bijvoorbeeld met behulp van de printf () methode met een Draad argument:

console.printf (progLanguauge + "is erg interessant!"); 

5. Conclusie

In dit artikel hebben we laten zien hoe u verschillende Java-klassen kunt gebruiken om invoer en uitvoer van consolegebruikers uit te voeren.

Zoals altijd worden de codevoorbeelden van deze tutorial aangeboden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found