2017-08-23 87 views
2

this问题,我该如何停止阅读输入?我的程序只是继续运行,要求更多的输入。在没有EOF的java中停止读取输入

public static void main(String[] args) throws Exception { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String src; 

    while ((src = br.readLine()) != null) { 
     String trgt = br.readLine(); 
     //do something 
     } 
    } 

回答

1

这样,

public static void main(String[] args) throws Exception { 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String src; 

while ((src = br.readLine()) != null) { 
    StringTokenizer st=new StringTokenizer(src); 
    if(!st.hasMoreTokens()) break; 
    //YOUR LOGIC GOES HERE 
    } 
} 
0

查找实例END的特殊字符串。当trgt等于“END”时,则可以中断循环。

+0

但网上法官不会接受这个答案 输入由法官提供的,我不能改变输入格式。 –

+0

那么法官会提供什么来表明没有更多的投入?我会认为这是一个EOF,不是吗? @ utkarsh691-sopho – Sweeper

0

正如@ihsan kocak所说的,你可以寻找一个像EXIT或QUIT这样的字符串。当你发现字符串只是打破循环。

0

设置一个特定的词作为阅读断路器。例如stop。如果用户输入stop,则读取过程将结束。下面是这个过程的实现示例:

public static void main(String[] args) throws Exception { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String src; 

    while ((src = br.readLine()) != null && !(src.equals("stop"))) { 
     String trgt = src; 
     //do something 
    } 
} 
+0

嵌套方法?你从输入流中读取三次... – Tom

+0

你是对的。我会改变实施。 –

+0

您仍然复制了您的方法和前两个变量,并且仍然是第二次读取。这两件事都是错误的。 – Tom