找不到符号怎么回事啊?

王奕然 2012-09-02 09:08:08
package ch1.inputstream;
import java.io.*;
public class data
{

public static void main(String args[]){
try{
FileInputStream fin=new FileInputStream("D:\\javadaima\\src\\ch1\\inputstream\\a.txt");
}catch(FileNotFoundException ex){ex.printStackTrace();}
try{
byte b=(byte)fin.read();

}catch(IOException ex){ex.printStackTrace();}
System.out.println(b);
}
}

D:\javadaima>javac -d class D:\javadaima\src\ch1\inputstream\data.java
D:\javadaima\src\ch1\inputstream\data.java:11: 找不到符号
符号: 变量 fin
位置: 类 ch1.inputstream.data
byte b=(byte)fin.read();
^
D:\javadaima\src\ch1\inputstream\data.java:14: 找不到符号
符号: 变量 b
位置: 类 ch1.inputstream.data
System.out.println(b);
^
2 错误
...全文
248 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alexander 2012-09-02
  • 打赏
  • 举报
回复
变量生存期呀……

变量b是在第二个try块里声明的局部变量,它的生存期在所在语句块结束后就跟着结束了。
System.out.println(b);在第二个try语句块之外,运行时变量b已经不存在了。
孤雨 2012-09-02
  • 打赏
  • 举报
回复
fin和b都是局部变量 不在他的作用域使用当然会出问题
先在外面声明并初始化

package ch1.inputstream;
import java.io.*;
public class data
{

public static void main(String args[]){
FileInputStream fin= null ;
byte b = 0 ;
try{
fin=new FileInputStream("D:\\javadaima\\src\\ch1\\inputstream\\a.txt");
}catch(FileNotFoundException ex){ex.printStackTrace();}
try{
b=(byte)fin.read();

}catch(IOException ex){ex.printStackTrace();}
System.out.println(b);
}
}
ncist_jianeng 2012-09-02
  • 打赏
  • 举报
回复
作用域的问题。每一个try里面是一个局部变量,不可在外面使用
  • 打赏
  • 举报
回复
javac -d class D:\javadaima\src\ch1\inputstream\data.java
你这是什么意思
王奕然 2012-09-02
  • 打赏
  • 举报
回复
还是不行
  • 打赏
  • 举报
回复

public class data
{

public static void main(String args[]){
try{
FileInputStream fin=new FileInputStream("D:\\javadaima\\src\\ch1\\inputstream\\a.txt");
byte b=(byte)fin.read();

}catch(Exception ex){
ex.printStackTrace();
}
System.out.println(b);
}
}






2399 2012-09-02
  • 打赏
  • 举报
回复
额,作用域是初学的一个难点啊,呵呵

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧