Innehållsförteckning:
Video: How to find sum of diagonal elements in java 2024
Till Java 1. 5 var det inte lätt att få textinmatning från användaren i ett konsolbaserat Java-program. Men med Java 1. 5 introducerades en ny klass - kallad
Scanner
- för att förenkla uppgiften att få insats från användaren. Här använder du klassen
Scanner
för att få enkla inmatningsvärden från användaren. De tekniker jag presenterar här används i många av de program som visas i resten av denna bok.
Om du använder en äldre version av Java, borde du fortfarande läsa detta, eftersom många program använder klassen
Skanner
.
Det enkla programmet nedan använder klassen
Scanner
för att läsa ett heltal värde från användaren och visar sedan värdet tillbaka till konsolen för att verifiera att programmet mottog det värde som användaren angav. Här är ett exempel på konsolfönstret för det här programmet:
Skriv ett heltal: 5
Du skrev in 5.
Programmet börjar med att visa meddelandet
Ange ett heltal:
på första raden. Sedan väntar det på att du anger ett nummer. När du skriver ett nummer (t.ex. 5) och trycker på Enter-tangenten visas bekräftelsemeddelandet (
Du skrev 5
.) På andra raden.
importera java. util. Scanner; @@ RA1
Public Class ScannerApp
{
statisk Scanner sc = ny skanner (System. In); @@ ra6
statisk statisk tomt huvud (String [] args)
{
System. ut. skriv ut ("Ange ett heltal:"); @@ ra10
int x = sc. nextInt (); @@ ra11
System. ut. println ("Du skrev in" + x + "."); @@ ra12
}
}
Importera skannerklassen i Java
Innan du kan använda klassen
Scanner
i ett program måste du importera det. För att göra det kodar du ett
import
uttalande i början av programmet innan klassdeklarationen:
importera java. util. Scanner;
Observera att
java
och
util
inte är aktiverade, men
Skanner
är.
Om du använder andra klasser i
java. util
-paketet, kan du importera hela paketet genom att koda
import
-sättningen enligt följande:
importera java. util. *;
Deklarera och skapa ett Scanner-objekt i Java
Innan du kan använda klassen
Scanner
för att läsa inmatning från konsolen måste du ange en
Scanner
-variabel och skapa en instans i klassen
Scanner
. Det kan hända att du skapar variabeln
Scanner
som en klassvariabel och skapar objektet
Scanner
i initialiseraren för klassvariabler, som visas i rad 6 i programmet ovan:
statisk scanner sc = ny scanner (system. in);
På så sätt kan du använda variabeln
sc
i valfri metod i klassen.
För att skapa ett
Scanner
-objekt, använder du
nytt
sökordet följt av ett samtal till klasskonstruktorn
Scanner
. Observera att klassen
Scanner
kräver en parameter som anger ingångsströmmen som ingången kommer från. Du kan använda
System. i
här för att ange standard tangentbordskonsolinmatning.
Få inmatning
För att läsa ett inmatningsvärde från användaren kan du använda en av metoderna i klassen
Scanner
som anges nedan. Som du kan se har den primitive datatypen en separat metod.
Metod | Förklaring |
Boolean nextBoolean ()
|
Läser ett värde
boolean
från användaren. |
byte nextByte ()
|
Läser ett värde
byte
från användaren. |
double nextDouble ()
|
Läser ett
dubbelvärde
från användaren. |
float nextFloat ()
|
Läser ett värde
float
från användaren. |
int nextInt ()
|
Läser ett värde
int
från användaren. |
String nextLine ()
|
Läser ett värde
String
från användaren. |
long nextLong ()
|
Läser ett värde
långt
från användaren. |
kort nextShort ()
|
Läser ett
kort
värde från användaren. |
Lägg märke till i den första kolumnen i tabellen att varje metodlista börjar med typen av det värde som returneras med metoden. Metoden
nextInt
returnerar till exempel ett värde
int
. Observera också att alla metoder slutar med en tom uppsättning parenteser. Det innebär att dessa metoder inte kräver parametrar. Om en metod kräver parametrar, anges parametrarna inom dessa parenteser.
Eftersom dessa metoder läser ett värde från användaren och returnerar värdet, använder du dem oftast i uttalanden som tilldelar värdet till en variabel. Linje 11, till exempel, läser en
int
och tilldelar den till en variabel som heter
x
.
När metoden
nextInt
körs, väntar programmet för användaren att ange ett värde i konsolfönstret. För att låta användaren veta vilken typ av ingång programmet förväntar sig brukar du ringa
Systemet. ut. skriv ut
innan du ringer en
Scanner
-metod för att få inmatning. Linje 10 ringer
System. ut. skriv ut
för att visa meddelandet
Ange ett heltal:
på konsolen. På så sätt vet användaren att programmet väntar på inmatning.
Om användaren anger ett värde som inte kan konverteras till rätt typ, kraschar programmet, vilket innebär att det slutar plötsligt. När programmet kraschar visas det ett kryptiskt felmeddelande som anger vad som orsakade felet. Om du anger
tre
istället för ett verkligt tal ser konsolfönstret något ut så här:
Ange ett heltal: tre Undantag i tråd "main" java. util. InputMismatchException
på java. util. Scanner. throwFor (Scanner. java: 819)
på java. util. Scanner. nästa (Scanner. Java: 1431)
på java. util. Scanner. nextInt (Scanner. java: 2040)
på java. util. Scanner. nextInt (Scanner. java: 2000)
på ScannerApp.main (ScannerApp. java: 11)
Det här meddelandet indikerar att ett undantag kallat
InputMismatchException
har inträffat, vilket innebär att programmet förväntade sig att se ett heltal men fick något annat istället. Om du inte vet hur du ska ge undantag som dessa så att programmet kan visa ett vänligare meddelande och ge användaren ett annat skott när du anger ett korrekt värde, måste du bekräfta att om användaren anger felaktiga data, ditt program kraschar skamligt.
Du kan förhindra att
nextInt
och liknande metoder kraschar med felaktiga inmatningsdata genom att först använda en av metoderna som listas här för att testa nästa ingång för att se till att den är giltig.
Metod | Förklaring |
Boolean hasNextBoolean ()
|
Returnerar
true
om nästa värde som anges av användaren är en giltig < boolean
värde.
boolean harNextByte () |
Returnerar
|
true
om nästa värde som anges av användaren är ett giltigt värde
byte
.
Boolean harNextDouble () |
Returnerar
|
true
om nästa värde som anges av användaren är ett giltigt värde
double
.
Boolean harNextFloat () |
Returnerar
|
true
om nästa värde som anges av användaren är ett giltigt värde
float
.
Boolean harNextInt () |
Returnerar
|
true
om nästa värde som anges av användaren är ett giltigt värde
int
.
Boolean harNextLong () |
Returnerar
|
true
om nästa värde som anges av användaren är ett giltigt värde
långt
.
Boolean harNextShort () |
Returnerar
|
true
om nästa värde som anges av användaren är ett giltigt
kort
värde.
|