这是我编写的一个用来测试的方法
public void get()
{
String i;
try{
InputStreamReader countReader = new InputStreamReader(System.in);
BufferedReader bfreader = new BufferedReader(countReader);
i=bfreader.readLine();
}
catch(IOException e){}
System.out.println(i);
}
这个编译的时候出现了没有初始化变量i的错误
但是我把System.out.println(i);移动到try块内的时候就没有错了,代码如下
public void get()
{
String i;
try{
InputStreamReader countReader = new InputStreamReader(System.in);
BufferedReader bfreader = new BufferedReader(countReader);
i=bfreader.readLine(); System.out.println(i);
}
catch(IOException e){}
}
这是什么原因呢~~~~请赐教
public void get()
{
String i;
try{
InputStreamReader countReader = new InputStreamReader(System.in);
BufferedReader bfreader = new BufferedReader(countReader);
i=bfreader.readLine();
}
catch(IOException e){}
System.out.println(i);
}
这个编译的时候出现了没有初始化变量i的错误
但是我把System.out.println(i);移动到try块内的时候就没有错了,代码如下
public void get()
{
String i;
try{
InputStreamReader countReader = new InputStreamReader(System.in);
BufferedReader bfreader = new BufferedReader(countReader);
i=bfreader.readLine(); System.out.println(i);
}
catch(IOException e){}
}
这是什么原因呢~~~~请赐教
你把它移进try中,
try{
System.out.println(i);
}那不是变成了叫程序:
你给我试试System.out.println(i);有没有异常....那这样当然不会有错误-------而且它产生一个没有初始化变量i的异常,只是你代码没有catch罢了
应该是某个地方catch了,但是没有输出罢了也就是说你的print语句实际上还是有异常
只是你放到try中了,那就有可会被你下面catch到,而你catch了并没有处理(显示出来)而你放在catch中那就不会catch到,不会catch到那编译器就会帮你显示出来
正解!*_*
InputStreamReader countReader = new InputStreamReader(System.in);
BufferedReader bfreader = new BufferedReader(countReader);
i=bfreader.readLine();
System.out.println("adfasd");
System.out.println(i);
}那么System.out.println("adfasd");可以被执行到
然后去catch 这时i并没有初始化,当然提示你说的错误
java是个强制性的语言,必须遵循语法规则
至于你说的新问题,还不是和以前一样,
将i赋初值=null
然后将i放在catch后面就没有错误了!!