static void parse(String fileName) throws IOException{
FileReader fileReader=new FileReader((fileName));
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuilder stringBuilder=new StringBuilder();
String string;
StringBuilder myString = null;
while((string = bufferedReader.readLine()) != null) {
myString =stringBuilder.append(string);
String h=myString.toString();
**System.out.println(h);**
}
}
static void parse(String fileName) throws IOException{
FileReader fileReader=new FileReader((fileName));
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuilder stringBuilder=new StringBuilder();
String string;
StringBuilder myString = null;
while((string = bufferedReader.readLine()) != null) {
myString =stringBuilder.append(string);
String h=myString.toString();
}
**System.out.println(h);**
}
当我尝试代码的第二部分时,它什么都没打印出来。 如何在while循环之外获取整个h String?我是否必须将变量h声明为实例变量而不是局部变量?
答案 0 :(得分:2)
无需创建实例变量。把h放在循环之外: -
static void parse(String fileName) throws IOException{
FileReader fileReader=new FileReader((fileName));
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuilder stringBuilder=new StringBuilder();
String string,h=null;
StringBuilder myString = null;
while((string = bufferedReader.readLine()) != null) {
myString =stringBuilder.append(string);
h=myString.toString();
}
System.out.println(h);
}
答案 1 :(得分:1)
你已经在while循环中初始化了h你无法在循环之外访问它
while((string = bufferedReader.readLine()) != null) {
myString =stringBuilder.append(string);
String h=myString.toString();
}
System.out.println(h);
你可以这样使用
String h;
while((string = bufferedReader.readLine()) != null) {
stringBuilder.append(string);
}
h=stringBuilder.toString();
System.out.println(h);
答案 2 :(得分:0)
你在while循环中声明你的h变量。因此,while循环的每次迭代都会创建一个新的h变量scopped到该迭代。
除非在while循环之外声明,否则您将无法访问while循环之外的h变量。
记住,你写的方式,h变量也在每次迭代都被覆盖,所以你的最终结果就是最后输出的内容。
从长远来看,这段代码也可以清理很多,你甚至不需要h
static void parse(String fileName) throws IOException{
BufferedReader br = new BufferedReader(new FileReader(fileName));
StringBuilder sb = new StringBuilder();
while((String line = br.readLine()) != null) {
sb.append(line);
}
System.out.println(sb.toString());
}
你必须检查我的语法,但那应该更清晰。