With this code:
public static void main(String[] args) {
String s = \"Java\";
StringBuilder buffer = new StringBuilder(s);
change(buffer);
You might have imported a wrong StringBuilder class instead of java.lang.StringBuilder which does have a StringBuilder(String) constructor and charAt(int) method.
Could you check your import. You should have this one
import java.lang.StringBuilder;
Make sure that you are not defining your class name as StringBuilder
For Example: Even if you import it correctly
import java.lang.StringBuilder;
But if you write your class as
public class StringBuilder { //If class name matches below Object Creation
public static void main(String[] args) {
String s = "Java";
StringBuilder buffer = new StringBuilder(s); //Object creation
change(buffer);
System.out.println("What's strBuf.charAt(5)? " + strBuf.charAt(3));
System.out.println(buffer);
}
private static void change(StringBuilder buffer) {
buffer.append(" and HTML"); //you will get this error at append
//The method append(String) is undefined for the type StringBuilder
}
}
Suggestions
Rename your class name to something else but not StringBuilder
StringBuilder does have a constructor accepting a String as an argument, and does have a .charAt() method (which it it must implement since it implements CharSequence
).
Conclusion: this is a mishap from the part of your IDE, which did not import the correct StringBuilder
. You use another library which has the unfortunate "property" of having implemented a class by the same name -- but not in the same package.
Go see at the top of your file if the import line is:
import java.lang.StringBuilder;