我不知道标题是否正确。 我想问的是如果方法的下一行是空的,如何停止循环。 我有2种方法:
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
rrr thisObj = new rrr();
String command = br.readLine();
while ((command = br.readLine())!=null) {
int b=0;
thisObj.perintah(b,command);
}
}
public void perintah(Integer indek, String PesanSumber)
{
String Pesan = PesanSumber.trim();
int panjang = Pesan.length();
if (panjang >=3)
{
if (Pesan.toLowerCase().trim().substring(0, 3).equals("log") )
{
System.out.println("bla bla bla");
}
else if (Pesan.toLowerCase().trim().substring(0, 4).equals("move"))
{
System.out.println("bla bla bla");
}
else if (Pesan.toLowerCase().trim().substring(0, 4).equals("move"))
{
System.out.println("bla bla bla");
}
}
}
问题是,如果我运行它,即使下一行是空的也不会停止。
答案 0 :(得分:2)
String command = br.readLine();
while ((command = br.readLine())!=null) {
首先,你在循环之前调用readLine()
错过了第一行。
其次,你可以添加第二个条件来检查当行不为空时该行是否为空:
String command;
while ((command = br.readLine())!=null && !command.isEmpty()) {
现在,它应该停在一条线为空或者流中没有新线的地方。
答案 1 :(得分:1)
你试图初始化字符串两次,读取一个空行,所以只需更改
String command = br.readLine();
到
String command;
答案 2 :(得分:0)
你可以尝试以下。现在它会停止。
String command;
while ((command = br.readLine())!=null) {
int b=0;
thisObj.perintah(b,command);
}
在您的代码中
String command = br.readLine(); // you read empty line
while ((command = br.readLine())!=null) { // But command will override by next line
int b=0;
thisObj.perintah(b,command);
}
答案 3 :(得分:0)
使用扫描仪,您还可以使用.hasNext()。next()方法,这是一种非常经典的处理方式。示例:BufferedReader pointer
答案 4 :(得分:0)
我刚刚通过你的代码,
String command = br.readLine();
应该换成
String command = "";
否则你的第一个输入将被遗漏。
要回答您的问题,System.in不会返回null,因此您必须检查空字符串为
String command;// br.readLine();
while (!(command = br.readLine()).isEmpty())
{
int b = 0;
thisObj.perintah(b, command);
}
这应该可以正常工作。