scan.nextLine();

0

Czesc mam taki kod, jako poczatkujacy w javie (w c++ nie bylo czegos takiego raczej), chodzi mi dlaczego daje sie scan.nextLine(); przed pobieraniem danych Stringa a przed doublem albo inta juz nie. Zadanie https://www.hackerrank.com/challenges/java-stdin-stdout/problem

``

import java.util.Scanner;

public class Solution {

public static void main(String[] args) {
    
    Scanner scan = new Scanner(System.in);
    int i = scan.nextInt();
    double d = scan.nextDouble();
    scan.nextLine();
    String s = scan.nextLine();
   
    
        
    // Write your code here.

    System.out.println("String: " + s);
    System.out.println("Double: " + d);
    System.out.println("Int: " + i);
}

}
``

1

Dlatego że w int i double pobierasz po jednej wartości a w string - scan.nextLine() - całe zdanie, jeśli chcesz jedno słowo to bierzesz scan.next()

1
tomanhez napisał(a):

Dlatego że w int i double pobierasz po jednej wartości a w string - scan.nextLine() - całe zdanie, jeśli chcesz jedno słowo to bierzesz scan.next()

scan.nextLine();
    String s = scan.nextLine();

Mu chodzi o te pierwsze scan.nextLine() :)

0
Adam “Ironma” napisał(a):

chodzi mi dlaczego daje sie scan.nextLine(); przed pobieraniem danych Stringa a przed doublem albo inta juz nie.

To nie tak że dajesz nextLine() przed pobraniem danych Stringa, dajesz nextLine() PO pobraniu liczby przez np nextInt(), z tego względu że nie wczytują one entera. Jeśli tego nie zrobisz Twoja zmienna "s" będzie przechowywać znak nowej linii pozostały po wczytywaniu liczby.

https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-or-nextfoo

1 użytkowników online, w tym zalogowanych: 0, gości: 1