Podstawy skanowania - klasa Scanner

nietopereek

Klasa Scanner służy do odczytywania danych z wejścia takich jak klawiatura, wartość String czy też plik tekstowy. Myślę, że nikt nie powinien mieć problemów z poniższymi przykładami.

1 Odczyt z klawiatury
2 Odczyt ze zmiennej typu string
3 Odczyt z pliku tekstowego
4 Najczęściej używane metody klasy Scanner

Odczyt z klawiatury

// Dołączamy bibliotekę java.util w której znajduje się klasa Scanner.
import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
            /* Deklarujemy nasz skaner, odczytujemy dane z standardowego wejścia, domyślnie jest to klawiatura */
	Scanner klawiatura = new Scanner(System.in);
            /* Poniżej właśnie pobieramy zmienną z klawiatury, program oczekuje w tym wypadku  na wpisanie w konsoli wartości typu Integer */
	Int a = klawiatura.nextInt();
	System.out.print(a);
    }
}

Powyższy program oczekuje na wpisanie liczby całkowitej w konsoli, po czym po prostu ją wyświetla.

Odczyt ze zmiennej typu string

import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
            Double d;
            String dane = "10,4 2,22  3,14 11,9956";
	Scanner skaner = new Scanner(dane);
                   /* W tym wypadku wykonujemy tak długo pętlę dopóki będzie trafiać na wartości Double ze skanera */
                  while(skaner.hasNextDouble()) {
                  d = skaner.nextDouble();
                  System.out.print(d + " ");
                  }
    }
}

W powyższy przykładzie zadeklarowaliśmy zmienną String w której umieściliśmy kilka wartości typu Double, program najpierw sprawdza, czy jest dostępna następna wartość typu Double, jeżeli tak to ją wypisuje i zaczyna od nowa wykonywać pętlę, jeżeli pętla zwróci wartość false program zakończy swoje działanie.

Odczyt z pliku tekstowego

import java.util.*;
import java.io.*;

public class Main
{
    public static void main(String[] args) throws IOException
    {
    	String s;
    FileReader fr = new FileReader("dane.txt");
	Scanner plik = new Scanner(fr);
				  /* W tym wypadku pętla się wykonuje dopóki trafia na dowolną wartość */
                  while(plik.hasNext()) {
                  s= plik.next();
                  System.out.print(s + " ");
                  }
    }
}

W powyższym przykładzie tworzymy obiekt typu FileReaderw którym jak parametr podajemy nazwę pliku tekstowego, na którym będziemy operować. Jak widać program działa podobnie jak w przykładzie drugim, lecz tutaj operujemy na pliku oraz wykonujemy pętlę dopóki odczytamy ostatnią dowolną wartość.

Najczęściej używane metody klasy Scanner

boolean hasNext() - zwraca wartość True jeśli następna wartość dowolnego typu jest dostępny do odczytu.
string next() - zwraca odczytaną następną wartość dowolnego typu.
boolean hasNextInt() - zwraca wartość True jeśli następna wartość jest typu Integer.
int nextInt() - zwraca następną odczytaną wartość typu int.
boolean hasNextDouble() - zwraca wartość True jeśli następna wartość jest typu Double.
double nextDouble() - zwraca następną odczytaną wartość typu Double.

Jak widać w powyższych metodach, tylko dla wartości typu String zapis się różni, w innych przypadkach po prostu dodajemy na końcu metody hasNext oraz next typ zmiennej której chcemy wczytać.

0 komentarzy