Java扫描器只在方法的第一行上运行为什么不在中间
我是Java的新手,但我想知道为什么扫描仪输入系统只在方法的第一行代码中工作,而不是在下面代码的中间,因为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());
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