Java 为什么我在输入一个参数后不退出while循环$

Java 为什么我在输入一个参数后不退出while循环$,java,while-loop,Java,While Loop,当我输入$时,我希望while循环退出,但它会继续循环。谢谢你的帮助 import java.io.*; import java.util.*; public class test { public static void main(String[] args) { String oneLine = ""; try { BufferedReader indata = new Buffe

当我输入$时,我希望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;
    }
}

将代码更改为:

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

您正在将BufferedReader对象与字符串进行比较。我相信你想与当前行进行比较。同样如注释中所述-您需要将
oneLine
初始化为非空值,以避免第一次进入while循环时出现
NullPointerException

尝试查看
BufferedReader
是否等于
字符串
;你认为会发生什么?问题的第二部分。如果我输入$abc,我想退出while循环。只要第一个字符是$I,我就想退出。谢谢。因此,您可以执行
,而(oneLine.charAt(0)!='$)
oneLine
在检查循环条件时不保证初始化。如果没有更多数据可读取,则该行可能为空