我正在尝试生成一个以这样的形式输出用户输入的程序:
输入:word
瓦特
WO
窝
字
这种增量构建似乎不起作用。
import java.util.*;
public class SpellMan {
public static void main(String[] args) {
Scanner kb = new Scanner (System.in) ;
System.out.println("Give me a word > ");
String word = kb.nextLine();
for(int i = 0; i< word.length();i++){
String bword += ""+word.charAt(i);
System.out.println(bword);
}
}
}
答案 0 :(得分:3)
您在循环中声明bword
,因此在每次迭代中,您都尝试将当前字符连接到未初始化的String
变量。
尝试:
String bword = "";
for(int i = 0; i< word.length();i++) {
bword += word.charAt(i);
System.out.println(bword);
}
也就是说,使用StringBuilder
会更有效(创建更少的对象)。
StringBuilder bword = new StringBuilder(word.length());
for(int i = 0; i< word.length();i++) {
bWord.append(word.charAt(i));
System.out.println(bword.toString());
}
答案 1 :(得分:0)
除了其他代码问题之外,关于您的问题标题的要点是您不能在声明中使用+=
运算符,因为bword
仍为null(它不会编译)。
String bword = ""; //before the loop
bword += word.charAt(i);
System.out.println(bword);