Java

Podstawy skanowania - klasa Scanner

  • 2009-09-18 16:17
  • 0 komentarzy
  • 30363 odsłony
  • Oceń ten tekst jako pierwszy
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.



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ć.