Odczytywanie liczb i wierszy
nextInt, nextLine i pułapki
Odczytywanie liczb i wierszy to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.
Odczytywanie liczb według typu
Scanner może bezpośrednio odczytywać liczby za pomocą metod takich jak nextInt i nextDouble. Metody te konwertują kolejny token na odpowiadający mu typ prosty.
Odczytywanie liczby całkowitej
nextInt() odczytuje kolejny token i zwraca go jako wartość typu int. W tym przykładzie użyto stałego ciągu znaków, aby można go było uruchomić bez wpisywania danych.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("25");
int age = scanner.nextInt();
System.out.println(age + 1);
scanner.close();
}
}Odczytywanie liczby zmiennoprzecinkowej
nextDouble() odczytuje wartość zmiennoprzecinkową. Następnie można użyć jej w obliczeniach.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("3.5");
double radius = scanner.nextDouble();
System.out.println(radius * 2);
scanner.close();
}
}Odczytywanie wielu liczb
Kolejne operacje odczytu liczb pobierają tokeny jeden po drugim, pomijając oddzielające je białe znaki.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("10 20 30");
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
System.out.println(a + b + c);
scanner.close();
}
}Sumowanie do zakończenia danych
Połączenie metod hasNextInt() i nextInt() pozwala odczytywać nieznaną liczbę liczb.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("5 15 25 35");
int total = 0;
while (scanner.hasNextInt()) {
total += scanner.nextInt();
}
System.out.println(total);
scanner.close();
}
}Słynna pułapka nextLine
Oto klasyczna pułapka: nextInt() odczytuje liczbę, ale pozostawia znak nowego wiersza w buforze. Następne wywołanie nextLine() odczytuje wtedy pozostały pusty wiersz, a nie oczekiwany tekst.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42\nHello World");
int n = scanner.nextInt();
String line = scanner.nextLine();
System.out.println("Number: " + n);
System.out.println("Line: [" + line + "]");
scanner.close();
}
}Usuwanie pułapki
Rozwiązaniem jest wywołanie dodatkowego nextLine() po nextInt(), aby odczytać pozostający znak nowej linii przed odczytaniem właściwego wiersza.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42\nHello World");
int n = scanner.nextInt();
scanner.nextLine();
String line = scanner.nextLine();
System.out.println("Number: " + n);
System.out.println("Line: [" + line + "]");
scanner.close();
}
}Odczytywanie wartości typu long i boolean
Scanner udostępnia także metody nextLong, nextBoolean i inne. Każda z nich odczytuje token odpowiedniego typu.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("9000000000 true");
long big = scanner.nextLong();
boolean flag = scanner.nextBoolean();
System.out.println(big);
System.out.println(flag);
scanner.close();
}
}Niezgodny typ powoduje wyjątek
Jeśli następny token nie jest poprawną liczbą, nextInt zgłasza wyjątek InputMismatchException. W razie wątpliwości zawsze najpierw sprawdzaj za pomocą hasNextInt.
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc");
try {
scanner.nextInt();
} catch (InputMismatchException e) {
System.out.println("Not an integer!");
}
scanner.close();
}
}Bezpieczne odczytywanie liczb
Solidny schemat odczytuje dane tylko wtedy, gdy dostępna jest wartość właściwego typu; w przeciwnym razie odczytuje i odrzuca niepoprawny token.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("x 7 y 9");
int sum = 0;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
sum += scanner.nextInt();
} else {
scanner.next();
}
}
System.out.println(sum);
scanner.close();
}
}Najważniejsze wskazówki
Używaj nextInt i nextDouble do odczytywania liczb, stosuj zabezpieczenia z rodziny hasNext i pamiętaj o odczytaniu pozostającego znaku nowej linii przed przełączeniem się na nextLine.
Szybki test
Sprawdź swoją wiedzę na temat odczytywania liczb i wierszy.
Podsumowanie
Nauczyłeś się odczytywać liczby i wiersze:
nextInt,nextDoubleinextLongodczytują liczby określonych typów- W przypadku nieznanej liczby danych używaj pętli z
hasNextInt - Pułapka związana ze znakiem nowej linii: po
nextIntwywołaj dodatkowonextLine - Niepoprawne tokeny powodują wyjątek
InputMismatchException - Dla bezpieczeństwa zabezpieczaj odczyty za pomocą rodziny metod
hasNext
Często zadawane pytania
Czy lekcja „Odczytywanie liczb i wierszy” jest bezpłatna?
Tak — pełny tekst „Odczytywanie liczb i wierszy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Odczytywanie liczb i wierszy”?
nextInt, nextLine i pułapki Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Java Academy?
Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Odczytywanie liczb i wierszy”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?
Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Odczytywanie danych wejściowych za pomocą Scanner
- Odczytywanie liczb i wierszy
- Walidacja danych użytkownika
- Alternatywa dla BufferedReader