CodeBlanks Logo Icon CodeBlanks

nextInt ve nextLine

nextInt() ve nextLine() ile tür dönüşümü öğrenirsin.

nextInt ile sayı oku

nextInt() konsoldan bir tam sayı okur. nextDouble() ise ondalıklı sayı için kullanılır. Bu yöntemler sayıyı okur ama satır sonundaki \n karakterini geride bırakır.

Scanner input = new Scanner(System.in);
System.out.print("Yaş: ");
int age = input.nextInt();
System.out.println("Yaşınız " + age);

Sayı okuduktan hemen sonra nextLine() çağırırsan boş dize alırsın; çünkü kalan \n hemen tüketilir. Bu tuzak bir sonraki kartta ele alınır. Şimdilik sayı okumanın temelini kavrayın.

nextInt ve nextLine tuzağı

nextInt() sayıyı okur ama satır sonundaki \n'i bırakır. Ardından nextLine() çağırırsan, kalan \n hemen tüketilir ve boş dize alırsın. Çözüm: sayı okuduktan sonra boş bir nextLine() ile kalan satırı temizlersin.

int age = input.nextInt();
input.nextLine(); // kalan \n'i temizle
String name = input.nextLine();

Bu düzenek yaygın bir hatadır. Sayıdan sonra metin okuyacaksan her zaman araya bir nextLine() koy. Böylece sonraki nextLine() gerçek kullanıcı girdisini okur.

Uygulama Yaş ve ad birlikte

Kullanıcıdan önce yaşı (nextInt), sonra adı (nextLine) al. Sayıdan sonra kalan satırı temizlemeyi unutma. Sonuç olarak Merhaba <ad>, <yaş> yaşındasın yazdır. Kullanıcı önce 30, sonra Mehmet yazacak.

Başlangıç kodu

Main.java
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    // yaş oku, kalan satırı temizle, ad oku, selamla
  }
}

Örnek çözüm

Main.java
System.out.print("Yaş: ");
int age = input.nextInt();
input.nextLine();
System.out.print("Ad: ");
String name = input.nextLine();
System.out.println("Merhaba, " + name + ", " + age + " yaşındasın");

Beklenen çıktı

Yaş: Ad: Merhaba, Mehmet, 30 yaşındasın

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Yaşı oku

Soru
System.out.print("Yaş: ");
int age = input.____();
System.out.println(age);
Cevap
System.out.print("Yaş: ");
int age = input.nextInt();
System.out.println(age);

Açıklama: nextInt() bir tam sayı okur.

2 Aşağıdaki koddan sonra name değişkeninin değeri ne olur? int n = input.nextInt(); String name = input.nextLine(); (Kullanıcı 25 yazıp Enter'a basıyor, sonra Ayşe yazıp Enter'a basıyor.)

  • Ayşe
  • 25
  • 25Ayşe
  • Boş dize ("") Doğru cevap

Açıklama: nextInt 25'i okur ama \n kalır; nextLine kalan \n'i hemen tüketir ve boş dize döner.

3 Okuma yöntemini türle eşleştir

Kavram Anlamı
nextInt() int
nextDouble() double
nextLine() String
nextBoolean() boolean

Başlangıç bölümündeki tüm dersler