[英]the variable only have it value inside while loop?
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聲明為實例變量而不是局部變量?
無需創建實例變量。 只需將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);
}
您已在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);
您在while循環中聲明了h變量。 因此,while循環的每次迭代都會為該迭代創建一個新的h變量。
除非在while循環外聲明了h變量,否則您將無法在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());
}
您必須檢查我的語法,但這應該更干凈。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.