static void losujPytanie(FileReader obF,int numerPytania){
StringBuilder SB = new StringBuilder();
Scanner input = new Scanner(obF);
String strIntr="";
String str;
while(input.hasNext()){
str=input.nextLine();
if((str.substring(0,1).contains(String.valueOf(numerPytania)))){
SB.append(str);
do{
SB.append(String.format("%s\n", strIntr));
strIntr=input.nextLine();
if(!input.hasNextLine()) {
SB.append(strIntr);
break;}
}while(!strIntr.substring(0, 1).contains(String.valueOf(numerPytania+1)));
//break;
};
}
input.close();
System.out.println(SB);
}
public static void main(String[] args) throws IOException {
FileReader obF = new FileReader("quiz.txt");
losujPytanie(obF, 5);
losujPytanie(obF, 1);
}
Przy takim kodzie, w konsoli pojawia sie tylko jedno wywolanie pytania. Jesli jednak przerzuce tworzenie obiektu FileReader obF = new FileReader("quiz.txt");
do funkcji losujPytanie
, to wtedy wyskakują dwa pytania.
moje pytanie - dlaczego tak sie dzieje, ze jezeli obiekt FileReader jest w parametrze funkcji losujPytanie
to drugie wywolanie tej funkcji "nie dziala" , a gdy wrzuce obiekt FileReader</code> do wnetrza funkcji <code> losujPytanie
to wtedy funkcja dziala zgodnie z moim oczekiwaniem?
obF
nie można zresetować (reset() not supported
). Trzeba zmienić klasęFileReader
naFile
i resetować Scanner.