黑马程序员技术交流社区
标题:
try中的变量 在try外面不能用吗?
[打印本页]
作者:
刘圣繁
时间:
2013-2-21 22:55
标题:
try中的变量 在try外面不能用吗?
import java.net.*;
import java.io.*;
class LoginClient
{
public static void main(String[]args)throws Exception
{
Socket st=new Socket("192.168.0.2",10002);
try{
PrintWriter out=new PrintWriter(st.getOutputStream(),true);
BufferedReader bur=new BufferedReader(new InputStreamReader(System.in));
BufferedReader buw=new BufferedReader(new InputStreamReader(st.getInputStream()));
for(int i=0;i<3;i++)
{
String name=bur.readLine();
if(name==null)
{
System.out.println("请输入用户名");
continue;
}
out.println(name);
String line=buw.readLine();
System.out.println(line);
if(line.contains("欢迎"))
break;
}
}
catch(IOException e){e.printStackTrace();}
finally{
try{
bur.close();
st.close();
}
catch(IOException e){e.printStackTrace();}
}
}
}
上面代码编译时出现问题
说变量bur找不到
编译提示找不到bur!!!!!!!!!!!
是不是说明try中的变量在try外面不能用
作者:
谢波
时间:
2013-2-21 23:10
变量都有作用域的
一般来说呢就是一对大括号内
出了大括号就离开了变量的作用域,变量被释放了,不存在了
作者:
江华
时间:
2013-2-21 23:15
{} 内的东西,只能{}自家用,其他想用,只能让{},在内部声明为 static
作者:
胥文
时间:
2013-2-21 23:15
try代码块中的变量是局部变量,外面是用不了的
该代码中,你可以设成引用型变量定义在成员位置上,下面代码块就可以用了
比如
PrintWriter out=null//引用型变量定义在成员位置上
BufferedReader bur=null//引用型变量定义在成员位置上
BufferedReader buw=null//引用型变量定义在成员位置上
try{
out=new PrintWriter(st.getOutputStream(),true);
bur=new BufferedReader(new InputStreamReader(System.in));
buw=new BufferedReader(new InputStreamReader(st.getInputStream()));
}
这样写就不会有问题了
作者:
江华
时间:
2013-2-21 23:40
{} 内的东西,只能{}自家用,其他想用,只能让{},在内部声明为 static
作者:
小路飞
时间:
2013-2-22 10:12
胥文 发表于 2013-2-21 23:15
try代码块中的变量是局部变量,外面是用不了的
该代码中,你可以设成引用型变量定义在成员位置上,下面代码 ...
正解!归根起来还是局部变量的作用域问题。
作者:
scott0610
时间:
2013-2-22 13:13
在try中声明的变量属于局部变量,局部变量的作用域只能在当前的方法中使用,当方法执行完后,局部变量的生命周期也就结束了。
作者:
唐长智
时间:
2013-2-23 00:01
胥文 发表于 2013-2-21 23:15
try代码块中的变量是局部变量,外面是用不了的
该代码中,你可以设成引用型变量定义在成员位置上,下面代码 ...
正解 ,ooo
作者:
贾文泽
时间:
2013-2-23 00:35
import java.net.*;
import java.io.*;
class LoginClient
{
public static void main(String[]args)throws Exception
{
Socket st=new Socket("192.168.0.2",10002);
PrintWriter out=null;
BufferedReader bur=null;
BufferedReader buw=null; //在外面初始化,作用于整个main方法
try{
out=new PrintWriter(st.getOutputStream(),true);
bur=new BufferedReader(new InputStreamReader(System.in));
buw=new BufferedReader(new InputStreamReader(st.getInputStream()));
for(int i=0;i<3;i++)
{
String name=bur.readLine();
if(name==null)
{
System.out.println("请输入用户名");
continue;
}
out.println(name);
String line=buw.readLine();
System.out.println(line);
if(line.contains("欢迎"))
break;
}
}
catch(IOException e){e.printStackTrace();}
finally{
try{
bur.close();
st.close();
}
catch(IOException e){e.printStackTrace();}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2