Java扫描器只在方法的第一行上运行为什么不在中间

Java扫描器只在方法的第一行上运行为什么不在中间,java,methods,Java,Methods,我是Java的新手,但我想知道为什么扫描仪输入系统只在方法的第一行代码中工作,而不是在下面代码的中间,因为Java是逐行工作的,每当他们点击扫描仪输入代码时,他们应该要求输入…或者我做错了什么 public void go(){ try{ Socket soc= new Socket("127.0.0.1",5000); PrintWriter pw= new PrintWriter(soc.getOutputStream());

我是Java的新手,但我想知道为什么扫描仪输入系统只在方法的第一行代码中工作,而不是在下面代码的中间,因为Java是逐行工作的,每当他们点击扫描仪输入代码时,他们应该要求输入…或者我做错了什么

public void go(){        
 try{         
     Socket soc= new Socket("127.0.0.1",5000);
     PrintWriter pw= new PrintWriter(soc.getOutputStream());
     Scanner s= new Scanner(System.in) ;
     String txt=s.next();
     pw.println(txt);
     pw.flush();
     pw.close();
 }catch(Exception e){

 }        
} 
只需迭代一个循环:

public void go(){        
  try{         
     Socket soc= new Socket("127.0.0.1",5000);
     PrintWriter pw= new PrintWriter(soc.getOutputStream());
     Scanner s= new Scanner(System.in) ;
     while(true){
        String txt=s.next();
        pw.println(txt);
        pw.flush();
        pw.close();
     }
  }catch(Exception e){

 }        
} 
只需迭代一个循环:

public void go(){        
  try{         
     Socket soc= new Socket("127.0.0.1",5000);
     PrintWriter pw= new PrintWriter(soc.getOutputStream());
     Scanner s= new Scanner(System.in) ;
     while(true){
        String txt=s.next();
        pw.println(txt);
        pw.flush();
        pw.close();
     }
  }catch(Exception e){

 }        
} 

第一个问题是:

catch (Exception e){

}
上面说,“捕捉所有异常,不要告诉我发生了什么”

至少要这样做:

catch (Exception e){
    e.printStackTrace();
}

找出异常是什么。这将给你下一个问题的一些线索。(这可能与
扫描仪无关。我想问题出在
soc.getOutputStream()

第一个问题是:

catch (Exception e){

}
上面说,“捕捉所有异常,不要告诉我发生了什么”

至少要这样做:

catch (Exception e){
    e.printStackTrace();
}

找出异常是什么。这将给你下一个问题的一些线索。(这可能与
扫描仪
无关。我想问题出在
soc.getOutputStream()
上)

我很难理解您的问题,您能解释一下您的期望吗?您的代码调用
s.next()
一次,因此只读取一行。您必须遍历文件才能读取所有行。
next()
方法读取下一个标记。默认标记分隔符最多为一行。如果运行上述代码,编译器将完成“build SUCCESSFULLY”生成但是它没有要求输入…但是如果我把扫描器和字符串放在套接字行上方,它就会通过键盘要求输入。捕获并修复套接字中的异常。你的扫描器将开始工作…你能解释一下你的期望吗,因为我很难理解你的问题是什么?您的代码调用
s.next()
一次,因此只读取一行。您必须遍历文件才能读取所有行。
next()
方法读取下一个标记。默认标记分隔符最多为一行。如果运行上述代码,编译器将完成“build SUCCESSFULLY”生成但是它没有要求输入…但是如果我把扫描器和字符串放在套接字行上方,它会通过键盘要求输入。捕获并修复套接字中的异常。你的扫描器将开始工作…是的Stephen C你是对的,问题与扫描器无关打印堆栈dosent name scanner anywhere,即使我知道解决这个问题的方法是将scanner和next()代码放在套接字之上,它会请求输入…但是我对Java的研究很少,我的理解是Java逐行执行,所以当他们到达代码{String txt=s.next()}时,他们应该请求输入,但它没有,现在如果我把它放在套接字之上,它就会请求输入,我想知道它在幕后是如何工作的。@rachit3dev问题是,由于该异常,您的代码没有达到该点。异常发生后,“try”中的其余代码被忽略,程序将执行“catch”块中的代码。但是您的“catch”块中没有代码,所以您没有注意到这一点。首先修复异常,然后代码将继续执行到扫描程序行。@rachit3dev,恭喜你!在你编程生涯的早期,你就发现“吞咽”这样的异常会让你很难看出哪里出了问题。@SebastiaanvandenBroek你太棒了,我只是想知道我做错了什么,谢谢你刚刚理解了我问题的核心…现在每当我运行上面的代码并运行serversocket时,要求扫描程序输入bcoz,它会找到连接并引发dosent异常,因此代码会在整个try块中完全移动…gr8Yes Stephen C你是对的,问题与扫描程序无关打印堆栈dosent名称扫描器在任何地方,即使我知道解决这个问题的方法是把扫描器和next()代码放在套接字上,它会要求输入…但是我对Java的了解很少,我的理解是Java逐行执行,所以当他们到达代码{String txt=s.next()}时,他们应该要求输入,但没有,现在,如果我把它放在套接字上面,它会请求输入,我想知道它在幕后是如何工作的。@rachit3dev问题是,由于该异常,您的代码没有达到该点。异常发生后,“try”中的其余代码被忽略,程序将执行“catch”块中的代码。但是您的“catch”块中没有代码,所以您没有注意到这一点。首先修复异常,然后代码将继续执行到扫描程序行。@rachit3dev,恭喜你!在你编程生涯的早期,你就发现“吞咽”这样的异常会让你很难看出哪里出了问题。@SebastiaanvandenBroek你太棒了,我只是想知道我做错了什么,谢谢你理解了我问题的核心…现在,每当我运行上面的代码并运行serversocket时,请求扫描程序输入bcoz,它会找到连接并抛出异常,因此代码会在整个try块中完全移动…gr8