scan.nextLine();

scan.nextLine();
AI
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:1
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);
}

}
``

edytowany 1x, ostatnio: Adam “Ironma”
tomanhez
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 4 lata
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()

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

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

Nerkowiec
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:8
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.