HackerRank — Java End-of-file
EOF Nedir? hasNext() ve nextLine() kullanımı, Java End-of-file sorusunun çözümü
HackerRank üzerindeki Java problemlerini çözüyoruz. Bu dokuzuncu problem. Eğer diğer problem çözümlerini okumadıysanız önce onlara bakmanızı tavsiye ederim, hepsinin toplu hali:
Önce problemi anlayalım sonra da çözümüne geçelim. Problemi anlama kısmını okuduktan sonra problemi çözmeyi denemenizi sonra da buradaki çözümle karşılaştırmanızı şiddetle tavsiye ederim :)
Problemin linki 👇
Problemi anlayalım
Dosya Sonu (End Of File — genellikle EOF olarak kısaltılır), bilgisayar işletim sisteminde bir veri kaynağından daha fazla verinin okunamadığı bir durumdur.
Bu problemde inputtan aldığımız veriyi EOF olana kadar okuyacağız, sonra bu input’taki veriyi “satır numarası — satır verisi” şeklinde print edeceğiz.
Scanner.hasNext() metodu bu şekilde satır satır aldığımız toplu verilerde sonraki satıra ulaşmaya yarar.
Problem Beklentisi
Bu problem için HackerRank üzerinde sağlanan sabit bir kod yok, main metodumuz boş, gönlümüzce dolduracağız :D
- İlk önce input’u okuyacağız
- Sonra da input’u satır numarası ile birlikte print edeceğiz
Örnek Input:
Hello world
I am a file
Read me until end-of-file.
Örnek Output:
1 Hello world
2 I am a file
3 Read me until end-of-file.
Problem Çözümü
Bu problemde tek çözüm sunacağım, kısa ve öz oldu. Tek döngü complexity O(n).
public static void solutionOne() {
Scanner scanner = new Scanner(System.in);
int lineNum = 1;
while (scanner.hasNext()) {
System.out.println(lineNum + " " + scanner.nextLine());
lineNum++;
}
}
Scanner.hasNext() ile EOF olana kadar satır satır okuyoruz. Döngü içerisinde kullanılması önemli. EOF olmadığı sürece döngünün içerisine girecek. Döngü içerisinde de nextLine() ile satır satır inputu elde edeceğiz. Bu satırı da lineNum ile yani satır numarası ile birlikte print ediyoruz.
“ Java End-of-file” problemini de çözmüş olduk! Bol kodlu ama bug’sız günler dilerim :)
Tüm problemlerin çözümleri 👇