[Java] prompt dei comandi bloccato

Usernamer1
Buon anno nuovo a tutti!
qualcuno mi spiega perchè eseguendo questo codice il prompt dei comandi si blocca? cioè il "cursore" bianco del prompt è lampeggiante come fosse tutto regolare, ma non mi fa scrivere nulla
L'obiettivo è continuare a inserire stringhe nel vettore finché non c'è la chiusura dello standard input
import java.util.Scanner;
public class a {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		MyStringVector vector = new MyStringVector();
		
		System.out.println("Inserire il testo per righe:");
		while(input.hasNextLine());
		{
			vector.add(input.nextLine());
		} System.out.print("fine ciclo");

	}

}


Invece la parte utilizzata della classe MyStringVector è quanto segue
public class MyStringVector {
	
	//VARIABILI DI ESEMPLARE
	private int vSize;
	private String[] vector;
	
	//COSTRUTTORI
	public MyStringVector()
	{
		vSize = 0;
		vector = new String[10];
		for(int i=0; i < 10; i++)
			vector[i]=null;
	}
	
	//METODI
	public int size()
	{
		return vSize;
	}
	
	public String[] resize()
	{
		String[] newVector = new String[vector.length*2];
		System.arraycopy(vector, 0, newVector, 0, vSize);
		for(int i=vSize; i<newVector.length; i++)
			newVector[i] = null;
		vector = newVector;
		return vector;
	}
	
	public void add(String s)
	{
		if(s!=null)
		{
			if(vSize == vector.length)
				this.resize();
			vector[vSize++] = s;
		}
	}
}

Risposte
Studente Anonimo
Studente Anonimo
Perché devi segnalare in qualche modo al programma che è finito l'input, premendo CTRL-z, se usi Windows, oppure CTRL-d se usi Linux et similia.

Usernamer1
a quanto avevo capito io hasNextLine() blocca il programma per chiedere l'input, ma non lo consuma, perciò dal momento che inserisco qualcosa di diverso da ctrl+Z ciò che ho inserito dovrebbe essere preso da input.nextLine() nel corpo del while, e la cosa ripetersi nuovamente finché non inserisco ctrl+Z che dovrebbe bloccare tutto, invece il programma mi fa inserire una riga, premo invio e poi più nulla... cosa ho sbagliato?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.