Scanner Kullanımı ve bir trick

Merhabalar, Javada Scanner kütüphanesi ile komut satırından yapılan girdileri okuyabiliriz ve diğer girişleri de bekleyebiliriz. Bu basit bir konu ancak bir trickten bahsedeceğim. O da scanner’ın bize vermiş olduğu methodlardan biri olan nextline() input üzerinde bir satır ileri giderken nextInt() ve nextDouble() ilerlemiyor.

import java.util.Scanner;

public class Solution {

public static void main(String[] args) {
 Scanner scan = new Scanner(System.in);
 
 int i = Integer.parseInt(scan.nextLine()); 
 Double d = Double.parseDouble(scan.nextLine());
 String s = scan.nextLine();
 
 System.out.println("String: " + s);
 System.out.println("Double: " + d);
 System.out.println("Int: " + i);
 }
}

Yukarıdaki aşağıdaki gibi bir input denersek doğru sonuç verecek

42
3.1415
Welcome 

Sonuç:

String: Welcome
Double: 3.1415
Int: 42

 

Şöyle olsa idi eksik sonuç basacaktı. Sonuç da aşağıda. gördüğünüz gibi Stringde eksik var

 Integer i = scan.nextInt();
 Double d = scan.nextDouble();
 String s = scan.nextLine();

String: 
Double: 3.1415
Int: 42

Düzeltmek için ise kod şöyle olmalı(Dikkat ederseniz en üstteki methodlardan farklı methodlar bunlar)

 Integer i = scan.nextInt();
 Double d = scan.nextDouble();
 String s = scan.nextLine();

s = scan.nextLine();

Özetle şunu söylüyoruz. nextInt veya nextDouble() gibi methodlar yerine nextLine() ile okuyup parse etmek en temizi. böylece cursorun nerde kaldığını biz takip etmiyoruz.

İyi çalışmalar

Yusuf