Я новичок в Java. Я попытался извлечь данные сотрудника из текстового файла и сохранить его в коллекции. Я использовал Stringtokenizer для получения строк из файла, но во второй итерации цикл while бесконечен; он не выйдет из цикла while. Мой код:Бесконечный цикл while в java
public class Reader1 {
String a;
int i = 0;
int count = 0;
int x = 0;
int y = 0;
File f = new File(
"C:\\Documents and Settings\\kmoorthi\\Desktop\\ak\\sample.txt");
ArrayList<Employee> al = new ArrayList<Employee>();
public void notePad() throws IOException {
try {
FileReader fis = new FileReader(f);
BufferedReader br = new BufferedReader(fis);
do {
a = br.readLine();
i++;
if (i > 1) {
if (a != null) {
StringTokenizer st = new StringTokenizer(a, " ");
Employee e = new Employee();
System.out.println("hai1");
while (st.hasMoreTokens()) // here became infinite
{
count++;
if (count == 1) {
e.ename = st.nextToken();
al.add(e);
}
if (count == 2) {
e.eno = st.nextToken();
al.add(e);
}
}
}
}
} while (a != null);
br.close();
} catch (FileNotFoundException q) {
q.printStackTrace();
}
}
public void retrieve() {
Iterator<Employee> it = al.iterator();
while (it.hasNext()) {
Employee fi = (Employee) it.next();
String en = fi.ename;
System.out.println(en);
}
}
public static void main(String s[]) throws IOException {
Reader1 r = new Reader1();
r.notePad();
r.retrieve();
}
}
Пожалуйста, предложите решение.
в текстовом файле я ве только две строки для каждой строки например, Том 5647 james 4628 поэтому у st есть только два токена после этого, а петля должна выйти правильно –
Если бы он работал правильно, вы не просили бы о помощи. Просто сделайте 'e.ename = st.nextToken(); e.eno = st.nextToken(); al.add (e); 'вместо этого целого внутреннего цикла while. –
Это, или установите 'count = 0;' непосредственно перед внутренним 'while'. –