Klassen Scanner i Java – Skicka inputs till programmet


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.

Hur ger man ett värde som input till sitt program i Java?

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 i Java
Scanner i Java

Hur använder man klassen Scanner i Java?

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:

Syntax för Scanner i Java

import java.util.Scanner;

Scanner input = new Scanner(System.in);

  • Det vill säga, först importera klassen Scanner från biblioteket Java.util.
  • Sedan så har vi 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.

Skapa en Scanner i Java

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.

Exempel – Klassen Scanner i Java

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!

  • Först så skapar vi ett enkelt program som ska fråga användaren om två heltal
  • Sedan addera de två talen
  • Slutligen skriva ut svaret.

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:

Exempel på hur man använder scanner i java

Hantera rätt datatyp som input

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.

Tal

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

Tecken

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

Sant eller Falskt (Booleans)

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!