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(IOException e){}
String str=strb.toString();
System.out.println(str);
}
}
还有一个问题是:怎么样输入一个整数?

解决方案 »

  1.   

    String对象建立之后不能再改变,如果经常对字符串进行各种各样的修改,那么使用String来代表字符串的话会引起很大的内存开销。
    StringBuffer允许修改,不是每个不同的字符串都要生成一个新的对象,http://www.infowe.com/web/956.htm对于第二个问题:
    while 循环完成后
    Double.parseInt(strb);
      

  2.   

    看晕了,楼上的似乎在答非所问啊~~~~~~~~~~~~~-_-!楼主:你的代码逻辑太差了。 StringBuffer strb是在try块里面声明的,怎么在块外面来引用?还有,System.in.read()是按字符的ASCII码读入的,也就是说,如果你输出1,它会读成49。所以要先转换成char,再用Integer.parseInt()。
    总之用Java写命令行程序是很麻烦的,还不如用命令行参数方便。
      

  3.   

    楼上的。在try定义的变量只能在try中使用么,在try外就不能用了么?
      

  4.   

    把StringBuffer strb在try块外面声明
      

  5.   

    先把StringBuffer strb改正吧.呵呵.
      

  6.   

    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);
    }
    String str=strb.toString();
    System.out.println(str);
    } catch(IOException e){}
    }
    }
      

  7.   

    java交流群-22065798
    互相学习 共同提高
      

  8.   

    字符串有两种类型:一种是创建之后不需要改变的,称为字符串常量。在Java中用String类来处理。另一种是创建之后需要进行改变的,称为字符串变量。在Java中用StringBuffer类来处理。
    在Java语言中,String类被设计不变模式,每一个字符串都将被实现为一个字符串对象,它表示的是字符串常量。String类任何的内容发生改变,Java都会分配新的对象存储新的内容。StringBuffer表示的是字符串变量。字符串变量的内容是可以改变的,可以进行扩充、修改等操作。它们都可以用于表示字符串,只是适用条件不一样吧了。
    String->StringBuffer  好比  10 = i;~_~