[Java] prompt dei comandi bloccato
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
Invece la parte utilizzata della classe MyStringVector è quanto segue
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
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.
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?