petle i tablica

0

Mam taki kod i coś tu nie działa. Z założenia komputer miał pytać najpierw o ilość imion jakie użytkownik chce podać, potem miał pytać podaj imię z pozycji numer......, a następnie wypisać te imiona. Ale po włączeniu to nie działa prawidłowo.

Jak włączam i podaję liczbę to od razu wyskakuje np:

Ile imion chcesz zapisać
5
Jakie imię chcesz zapisać na pozycji numer 1
Jakie imię chcesz zapisać na pozycji numer 2

Dlaczego od razu komputer pyta o pozycję numer 2 zanim nie wprodzę imiona numer 1:( jestem kompletnie zielony proszę o pomoc.

import java.util.*;
public class Nauka1
{
	public static void main(String[] args)
	{
		Scanner input = new Scanner(System.in);
		System.out.println("Ile imion chcesz zapisać");
		int x = input.nextInt();
		String[]imiona = new String[x];
		
		for(int i = 0; i<x; i++)
		{
			System.out.println("Jakie imię chcesz zapisać na pozycji numer " +  (i+1));
			imiona[i] = input.nextLine();
		}	
		
		for(int i = 0; i<x; i++)
			System.out.println(imiona[i]);		
	}
	
}
1

W buforze pozostał znak nowej linii.

0

A mogę poprosić o rozwiązanie bo nie wiem co mam poprawić aby działało.

1

Jakie hasła wpisałeś w Google szukając rozwiązania tego problemu?

0

Metoda nextLine czyta cały wiersz, łącznie z kończącym go Enterem. Metoda nextInt odczytuje tylko liczbę, a użytkownik musiał po wpisaniu tej liczby nacisnąć Enter. I ten Enter należy też odczytać (usunąć z bufora klawiatury).

        int x = input.nextInt();
        input.nextLine(); //wyczyszczenie bufora
        String[]imiona = new String[x];
0

Rozumiem. A czy mógłby ktoś, kto się na tym zna, tak zmodyfikować mój kod aby to działało. Byłbym bardzo wdzięczny.ja coś próbowałem wymyślić ale mi nie wyszło.

0

Otwórz plik w edytorze i przesuń kursor na koniec wiersza

int x = input.nextInt();

Naciśnij ENTER, poniżej pojawi się pusty wiersz, wpisz w tym wierszu

input.nextLine();

Zapisz plik.

0

najlepiej zawsze dawaj nextLine() i opakowuj to w np w Integer.valueOf() tam gdzie chcesz inta

0

Porównaj wykonania tych kodów:

System.out.println("Ile imion chcesz zapisać?");
int x = input.nextInt();
input.nextLine();
System.out.println("Ile imion chcesz zapisać?");
int x = Integer.ValueOf(input.nextLine());

Użytkownik w obu przypadkach wpisuje tekst 3 imiona.

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