我尝试了这段代码,但它无效
import java.util.*;
class StringBuffer
{
public static void main(String[] args)
{
StringBuffer Name1=new StringBuffer();
Scanner in=new Scanner(System.in);
System.out.println("Enter a string: ");
Name1.append(in.nextLine());
System.out.println(Name1);
}
}
如果StringBuffer是定义的,那么它的工作原理。但它无法从用户那里获取信息。
答案 0 :(得分:1)
您的代码是正确的,但类名是错误的。更改您的班级名称并运行它。
答案 1 :(得分:1)
您使用的是class StringBuffer
,它已经是Java中的内置类。
参考:Oracle doc
当您在自定义类StringBuffer Name1=new StringBuffer();
中实例化StringBuffer
之类的对象时,它会创建一个对象,并引用您自定义的类StringBuffer
。
您需要创建一个内置StringBuffer class
的Java对象。
将您的类名更改为其他名称或使用StringBuilder,这不是线程安全但比StringBuffer更快。
此外,使用Scanner
课程阅读您的输入
How can I read input from the console using the Scanner class in Java?
答案 2 :(得分:0)
StringBuffer
是java.lang
包中的预定义类,您尝试使用该类,但是当您的类的名称与它发生冲突时,它会使用您的类定义而不是预定义的类。
此处Name1.append(in.nextLine());
您调用的append
方法未被您的类实现,因此会引发错误cannot find symbol
。
将您的班级名称更改为独特的名称,您就可以开始了。输入没有错。
答案 3 :(得分:0)
无论是否使用StringBuffer,都无需更改类名。 但是在你的课堂上做一个改变。当然它会从用户端获取输入
public class StringBuffer {
public static void main(String[] args) {
java.lang.StringBuffer Name1 = new java.lang.StringBuffer();
Scanner in=new Scanner(System.in);
System.out.println("Enter a string: ");
Name1.append(in.nextLine());
System.out.println(Name1);
}
}
它将解决您的问题。