Wpis z mikrobloga

import java.util.Scanner

fun main() {
val scanner = Scanner(System.in)
val a = scanner.next()
val c = scanner.nextLine()

println(a)
println(c)
}

#kotlin #java

Dlaczego nie czyta mi w konsoli val c? tylko po wpisaniu np. KOT odrazu printuje pierwszą wartość i nie mogę wpisać drugiej do konsoli?
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@yras8: Wpisując "KOT" tak naprawdę wpisujesz "KOT\n" gdzie \n jest znakiem nowej linii.
Po wykonaniu scanner.next() pobierasz pierwszy napis aż do napotkania białego znaku, więc do zmiennej a przypisany zostaje "KOT" a w buforze skannera zostaje "\n".
Gdy następnie wykonasz scanner.nextLine() zostaje wczytane wszystko do pierwszego napotkanego znaku nowej linii, czyli pobierasz "" a w skanerze już nic nie zostaje. Gdybyś zamiast KOT wpisał KOT MRUCZEK wypisałoby obydwa słowa.
  • Odpowiedz
@yras8: W przybliżeniu dlatego że tak działa konsola. Po wpisaniu tekstu naciskasz enter, który zarówno dodaje znacznik nowej linii i przesyła to co wpisałeś do programu.
  • Odpowiedz