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