Klassen Java.util.Scanner är en standardklass i Java och används för att kunna läsa av inputs av primitiva datatyper. Det är det enklaste sättet att läsa av information som användaren ger till programmet.
Ibland vill man skicka in värden eller tal till sitt program. Det kanske är en inmatning av vad du heter, eller antal produkter som någon har köpt i en affär. Vi kan använda Javas inbyggda klass Scanner för att hantera dessa input. Scanner kan exempelvis ta input från tangentbordet, filer eller textrutor.
Vi kan använda Javas inbyggda klass Scanner för att hantera input från användaren.
Scanner läser bland annat in värden som användaren skriver in i terminalen. För att använda scanner-klassen behöver vi skriva:
import java.util.Scanner;
Scanner input = new Scanner(System.in);
Om vi ska skriva det i kodeditorn så blir det först att vi importerar biblioteket.
import java.util.Scanner;
Vidare, vi behöver också skapa ett scanner-objekt. I senare kapitel kommer vi gå igenom vad klasser och objekt är men för tillfället nöjer vi oss med att lära oss hur vi kan ta in information från användaren med hjälp av ett scanner-objekt.
import java.util.Scanner; // Importera klassen scanner Scanner input = new Scanner(System.in); // Skapa ett scanner-objekt som hanterar input
Vi har nu skapat ett scanner-objekt som vi gett namnet input (det går självklart välja ett annat namn också). Notera att vi också behöver skriva System.in inom parentesen för att kunna läsa av input.
Med Scanner kan en användare skriva in vilken information som helst i terminalen-fönstret. Detta kan bli problematiskt, eftersom användaren kan skicka in en textsträng, när vi egentligen efterfrågar ett heltal. I avsnittet om datatyper, lärde vi oss att vårt program kommer att krascha om vi försöker spara fel slags information i fel datatyp. Därför måste vi ange vilken datatyp vi kommer att skicka in till scanner.
Vi testar med ett exempel!
Vi antar att användaren vet att det endast går bra med heltal och att användaren anger rätt.
import java.util.Scanner; // Importerar klassen Scanner public class Scanner_exempel { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Ange första talet: "); int first = input.nextInt(); // Sparar ned första talet System.out.println("Ange andra talet: "); int second = input.nextInt(); // Sparar ned andra talet // Skriver ut första, andra och första + andra talet System.out.println(first + " + " + second + " = " + (first+second)); } }
Programmet kommer i detta fall fråga om det första talet och vänta tills dess att användaren har skickat inputen. Därav, när första inputen är inskickad frågar Scanner efter det andra talet och väntar till dess att användaren har skrivit in talet. När båda talen är inskickade så skriver programmet ut svaret.
Observera vad som händer om man skickar in text, istället för ett tal:
Vidare, det är alltså viktigt att ange vilken datatyp som användaren kommer mata in, annars kommer Scanner inte kunna hantera datan. Nedan visas hur scanner hanterar varje datatyp.
Metod | Info | Exempel |
---|---|---|
int nextInt() | Sparar ned nästa input som en int, får ett fel om det inte är en int. |
input.nextInt(); |
double nextDouble() | Sparar ned nästa input som en double, får ett fel om det inte är en double. |
input.nextDouble(); |
Metod | Info | Exempel |
---|---|---|
String next() | Returnerar nästa tecken från scanner | input.next(); |
String nextLine() | Returnerar nästa rad som en String | input.nextLine(); |
Metod | Info | Exempel |
---|---|---|
boolean hasNext() | Returnerar true om det finns något mer att hämta, annars false. |
input.hasNext(); |
boolean hasNextInt() | Returnerar true om det som står på tur att behandlas kan tolkas som ett heltal (int), annars false |
input.nextInt(); |
boolean hasNextDouble() | Returnerar true om det som står på tur att behandlas kan tolkas som ett decimaltal (double), annars false |
input.nextDouble(); |
För vidare information hur klassen scanner fungerar så rekommenderar vi Oracle hemsida
Vad tyckte du om sidan?
Lämna gärna feedback och hjälp oss göra sidan bättre
Feedback gör oss bättre!
Lämna gärna feedback om vad du tyckte om avsnittet!