2015-03-14 3 views
0

Когда я ввожу $, я бы ожидал, что цикл while будет завершен, но он продолжит цикл. спасибо за вашу помощь

import java.io.*; 
import java.util.*; 

public class test { 

    public static void main(String[] args) { 

     String oneLine = ""; 
     try { 
      BufferedReader indata = new 
        BufferedReader(new InputStreamReader(System.in)); 

      while (!oneLine.equals("$")) { 

       oneLine = indata.readLine(); 
       System.out.println(oneLine); 
      } 
     } 
     catch (Exception e) { 
      System.out.println("Error --" + e.toString()); 
     } 
     System.out.println("outside of while \n"); 
     return; 
    } 
} 
+2

Вы пытаетесь выяснить, равен ли 'BufferedReader'' String'; как вы думаете, что происходит? – fge

+0

Часть 2 вопроса. Если я вхожу в $ abc, я хочу выйти из цикла while. Пока первый символ равен $, я хочу выйти. Спасибо. – Herbie

+0

для этого вы можете сделать 'while (oneLine.charAt (0)! = '$')' – silentprogrammer

ответ

0

Изменить код на что:

String oneLine = ""; 
while (!oneLine.equals ("$") && oneLine != null){ 
    oneLine = indata.readLine(); 
    System.out.println(oneLine); 
} 

Вы сравнивали объект BufferedReader с String. Я считаю, что вы хотите сравнить с текущей строкой. Также, как упоминалось в комментариях, вам нужно инициализировать oneLine ненулевому значению, чтобы избежать NullPointerException, когда вы впервые вводите цикл while.

+0

'oneLine' не будет инициализироваться при проверке условия цикла. –

+0

У вас есть проблема, что строка может быть нулевой, если больше нет данных для чтения – fge