2015-02-03 3 views
0

Я пытаюсь прочитать определенные данные от пользователя, используя BufferedReader и StringTokenizer, но вход не завершается.Бесконечная петля с BufferedReader

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
    StringTokenizer st; 
    st = new StringTokenizer(reader.readLine()); 
    N = Integer.parseInt(st.nextElement().toString()); 
    M = Integer.parseInt(st.nextElement().toString()); 
    System.out.println(N+"\n"+M); 
    for(int i = 0; i < M; i++) { 
     st = new StringTokenizer(reader.readLine()); 
     System.out.println(st); 
     int t1 = Integer.parseInt(st.nextElement().toString()); 
     int t2 = Integer.parseInt(st.nextElement().toString()); 
     ad.add(t2); 
     path.put(t1, ad); 
     System.out.println(t1+"and"+t2); 

     //path.put(t2, t1); 
     System.out.println(path); 
    } 
    st = new StringTokenizer(reader.readLine()); 

    int s = Integer.parseInt(st.nextElement().toString()); 
    int t = Integer.parseInt(st.nextElement().toString()); 

Он все же выходит из цикла (заключил это с использованием заявлений печати).

А также формат входного сигнала:

3 3 
1 3 
1 2 
2 3 
1 3 

ответ

1

Я просто побежал это и делает перерыв из цикла. Все, что я изменил удалял строки, которые не компилировать (ad.add (t2) и следующую строку) и положить «ИНТ» перед именами переменных ...

public static void main(String[] args) throws Exception { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
    StringTokenizer st; 
    st = new StringTokenizer(reader.readLine()); 
    int N = Integer.parseInt(st.nextElement().toString()); 
    int M = Integer.parseInt(st.nextElement().toString()); 
    System.out.println(N + "\n" + M); 
    for (int i = 0; i < M; i++) { 
     st = new StringTokenizer(reader.readLine()); 
     System.out.println(st); 
     int t1 = Integer.parseInt(st.nextElement().toString()); 
     int t2 = Integer.parseInt(st.nextElement().toString()); 
     System.out.println(t1 + "and" + t2); 

    } 
    st = new StringTokenizer(reader.readLine()); 

    int s = Integer.parseInt(st.nextElement().toString()); 
    int t = Integer.parseInt(st.nextElement().toString()); 
} 

выход ...

3 3 (I typed this) 
3 
3 
1 3 (I typed this) 
[email protected] 
1and3 
1 2 (I typed this) 
[email protected] 
1and2 
2 3 (I typed this) 
[email protected] 
2and3 
1 3 (I typed this) 

Программа заканчивается

+0

А теперь это прекратилось и для меня, то есть после того, как я удалил те же строки. Интересно, что с этим не так? –

+0

@AshishPatil Что такое «объявление» и «путь»? – BretC

+0

private static HashMap > path = new HashMap >(); private static LinkedList ad = new LinkedList (); –

Смежные вопросы