Java 变量在while循环中只有它的值?
当我尝试代码的第二部分时,它不会打印任何内容。Java 变量在while循环中只有它的值?,java,variables,Java,Variables,当我尝试代码的第二部分时,它不会打印任何内容。 如何使整个h字符串脱离while循环?我是否必须将变量h声明为实例变量而不是局部变量?您在while循环中声明了h变量。因此,while循环的每次迭代都将创建一个新的h变量,该变量的作用域为该迭代 除非在while循环外声明h变量,否则无法在while循环外访问它 请记住,按照您编写的方式,h变量也会在每次迭代中被覆盖,因此最终结果将是最后放入h中的内容 从长远来看,这段代码也可以被清理很多,而且你甚至不需要h static void parse(
如何使整个h字符串脱离while循环?我是否必须将变量h声明为实例变量而不是局部变量?您在while循环中声明了h变量。因此,while循环的每次迭代都将创建一个新的h变量,该变量的作用域为该迭代 除非在while循环外声明h变量,否则无法在while循环外访问它 请记住,按照您编写的方式,h变量也会在每次迭代中被覆盖,因此最终结果将是最后放入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;
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变量。因此,while循环的每次迭代都将创建一个新的h变量,该变量的作用域为该迭代 除非在while循环外声明h变量,否则无法在while循环外访问它 请记住,按照您编写的方式,h变量也会在每次迭代中被覆盖,因此最终结果将是最后放入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;
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,但无法在循环外访问它
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());
}
你可以这样使用它
while((string = bufferedReader.readLine()) != null) {
myString =stringBuilder.append(string);
String h=myString.toString();
}
System.out.println(h);
您已在while循环内初始化了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());
}
你可以这样使用它
while((string = bufferedReader.readLine()) != null) {
myString =stringBuilder.append(string);
String h=myString.toString();
}
System.out.println(h);
不需要创建实例变量。只需将h置于循环之外:-
String h;
while((string = bufferedReader.readLine()) != null) {
stringBuilder.append(string);
}
h=stringBuilder.toString();
System.out.println(h);
不需要创建实例变量。只需将h置于循环之外:-
String h;
while((string = bufferedReader.readLine()) != null) {
stringBuilder.append(string);
}
h=stringBuilder.toString();
System.out.println(h);
无论如何,我可以写我的代码,它不会在每次迭代中都被覆盖??长话短说,不。这取决于你真正想用h做什么。sb已经在存储文件内容,那么h到底是做什么的呢?如果你想把每一行存储在某个地方,我建议你把它们塞进一个字符串数组中,你可以单独查看。对不起,我不应该说不…你当然可以把字符串连接到h而不是覆盖它…但是,我真的不明白这一点,因为这些线条已经在sb中构建。我正在尝试从sb中获取每帧的10个字母组合。假设字符串是“abcdefghijk”,我尝试得到“abcdefghij”和“bcdefghijk”。这需要更多的操作,而不仅仅是将行读入变量。在没有h的情况下,你已经在做了。我会抛弃StringBuilder的想法,如果你的意思是“每一行”而不是“每一帧”,那么你可以保持循环不变,只需使用子字符串或其他什么来操作字符串行变量。不管怎样,我可以写我的代码,它不会在每次迭代中被覆盖??长话短说,不会。这取决于你真正想用h做什么。sb已经在存储文件内容,那么h到底是做什么的呢?如果你想把每一行存储在某个地方,我建议你把它们塞进一个字符串数组中,你可以单独查看。对不起,我不应该说不…你当然可以把字符串连接到h而不是覆盖它…但是,我真的不明白这一点,因为这些线条已经在sb中构建。我正在尝试从sb中获取每帧的10个字母组合。假设字符串是“abcdefghijk”,我尝试得到“abcdefghij”和“bcdefghijk”。这需要更多的操作,而不仅仅是将行读入变量。在没有h的情况下,你已经在做了。我会抛弃StringBuilder的想法,如果你的意思是“每一行”而不是“每一帧”,那么你可以保持循环不变,只需使用子字符串或其他什么来操作字符串行变量。这不是连接而是覆盖?而((string=bufferedReader.readLine())!=null){myString=stringBuilder.append(string);}这段代码应该使myString包含所有文本还是只包含一行文本?我认为应该创建一个字符串(myString),其中包含整个文件“myString=stringBuilder.append(string);”中的所有可用文本,这不是串联而是覆盖,而((string=bufferedReader.readLine())!=null){myString=stringBuilder.append(string);}这段代码应该使myString包含所有文本还是只包含一行文本?我认为应该创建一个字符串(myString),其中包含整个文件中可用的所有文本