此程序符合但无法成功运行,我无法找到错误。
public class Q1 {
public static void main(String[] args) {
StringBuffer[]stringBuffers = new StringBuffer[10];
for(int i =0; i< stringBuffers.length;i++){
stringBuffers[i].append("StringBuffer at index " + i);
}
}
}
答案 0 :(得分:6)
您没有初始化stringbuffers
。
你应该有像
这样的东西for(int i =0; i< stringBuffers.length;i++){
stringBuffers[i] = new StringBuffer();
或
for(int i =0; i< stringBuffers.length;i++){
stringBuffers[i] = new StringBuffer("StringBuffer at index " + i);
答案 1 :(得分:2)
你需要初始化StringBuffer:
public class Q1 {
public static void main(String[] args) {
StringBuffer[]stringBuffers = new StringBuffer[10];
for(int i =0; i< stringBuffers.length;i++){
stringBuffers[i]= new StringBuffer();
stringBuffers[i].append("StringBuffer at index " + i);
}
}
}
答案 2 :(得分:1)
您需要使用所需的字符串初始化数组中的StringBuffer
个对象: -
for(int i =0; i< stringBuffers.length;i++){
stringBuffers[i] = new StringBuffer("StringBuffer at index " + i);
}
答案 3 :(得分:1)
声明中:
StringBuffer[]stringBuffers = new StringBuffer[10];
你刚刚创建了一个包含10个元素的数组。但是你没有在其中放入任何元素。此数组中的每个元素仍为空,默认情况下包含null
。
所以当你打电话时
stringBuffers[i].append("StringBuffer at index " + i);
此处stringBuffers[i]
仍然未初始化,指向null
。
所以它给了java.lang.NullPointerException.
如其他答案中所述,如果你喜欢这样:
for(int i =0; i< stringBuffers.length;i++){
stringBuffers[i] = new StringBuffer();
这将使用引用将stringBuffer数组的每个元素初始化为StringBuffer对象。所以stringBuffer [i]现在不为空。
顺便说一下你应该使用StringBuilder。 StringBuffer和StringBuilder都提供可变字符串。仅当您的应用程序在多线程环境中运行时才使用StringBuffer becoz它会引入性能开销