一般cd播放sacd:java程序的问题

来源:百度文库 编辑:高校问答 时间:2024/05/04 16:45:42
import java.io.*;
public class StringBufferToString {
public static void main(String [] args){
char ch;
try {
System.out.println("Enter Width!");
int length = System.in.read();
StringBuffer strb = new StringBuffer(length);
while((ch = (char)System.in.read())!='\n')
{
strb.append(ch);
}
}catch (Exception e) {}
String str = strb.toString();
System.out.println(str);
}
}
运行时出现
StringBufferToString.java:14: cannot resolve symbol
symbol : variable strb
location: class StringBufferToString
String str = strb.toString();
^
1 error
程序本意是要限制字符串的长度为length,不过当输入字符长度超过length时,程序要样正常运行,有点不明白?

变量作用域问题,正确的写法是将 strb 定义在 try 块外面,即在 char ch;语句之后加上一句:
StringBuffer strb = new StringBuffer();
然后把 try 块里面的 StringBuffer strb = new StringBuffer(length); 修改为:
strb = new StringBuffer(length);
如果不理解,补习关于变量作用域的知识。

Java中的变量的作用域是它的{}所包含的语句。本问题就在于声明的StringBuffer类实例对象的作用域仅为try{}块,所以catch(){}块的str对象会报错。
楼上已经给出了解决方案