import java.util.*;
import java.io.*;
import java.net.*;
public class TestServer2 {
public static void main(String [] args) {
try {
ServerSocket ss;
ss = new ServerSocket(8888);
}catch(IOException e) {
System.out.println("传输错误");
}
Socket s = new Socket();
try{
s = ss.accept();
}catch(Exception e) {
System.out.println("连接失败");
}
try {
BufferedWriter bo = new BufferedWriter( new OutputStreamWriter(s.getOutputStream()));
BufferedReader bi = new BufferedReader(new InputStreamReader(s.getInputStream()));
}catch(IOException e) {
e.printStackTrace();
}
try {
String str = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
while(!str.equals("bye")) {
bo.write(str);
System.out.println("Cilent : " + bi.readLine());
str = br.readLine();
}
bo.close();
bi.close();
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
```
变量的作用域不同。变量ss在try{}块中定义他的作用就只在try{}可见,将变量的声明放在try外面,才在try{}外可用。
变量的声明全部提前,要不就使用一个try..catch...把全部包起来,变量的作用域仅限于一对{.......}内
楼上正解 try{}语句块可以理解为一个方法 方法内的变量是局部变量
弄清楚变量的作用范围
{}之内的才能访问
,记得关闭流,还有为什么用了这么多的try-catch语句,代码可读性不好,放在一个try-catch 中不可以吗。
变量作用域和初始化的问题,
package EliminateTheJoy;
import java.util.*;
import java.io.*;
import java.net.*;
public class TestServer2 {
public static void main(String [] args) {
ServerSocket ss=null;
try {
ss = new ServerSocket(8888);
}catch(IOException e) {
System.out.println("传输错误");
}
Socket s = new Socket();
try{
s = ss.accept();
}catch(Exception e) {
System.out.println("连接失败");
}
BufferedWriter bo=null;
BufferedReader bi=null;
try {
bo = new BufferedWriter( new OutputStreamWriter(s.getOutputStream()));
bi = new BufferedReader(new InputStreamReader(s.getInputStream()));
}catch(IOException e) {
e.printStackTrace();
}
try {
String str = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
while(!str.equals("bye")) {
bo.write(str);
System.out.println("Cilent : " + bi.readLine());
str = br.readLine();
}
bo.close();
bi.close();
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}