Java 逐字显示单词

Java 逐字显示单词,java,Java,我该怎么做 给我一句话>糖 苏 苏格 苏加 糖 以下是我到目前为止的情况: public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Enter a word:"); String word = scan.nextLine(); int length = word.length(); for(int number

我该怎么做

给我一句话>糖

苏格

苏加

以下是我到目前为止的情况:

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter a word:");
    String word = scan.nextLine();
    int length = word.length();
    for(int number = 0; number < length; number++){
        System.out.println(word.charAt(number));
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入一个单词:”);
String word=scan.nextLine();
int length=word.length();
用于(整数=0;数字<长度;数字++){
System.out.println(word.charAt(number));
}
}

这使得单词逐字显示。

一种方法是使用
字符串的形式

String word = "Sugar";
int length = word.length();
StringBuilder sb = new StringBuilder(word.length());
for (int number = 0; number < length; number++) {
    sb.append(word.charAt(number));
    System.out.println(sb.toString());
}
另一种方法可能是使用复合循环

String word = "Sugar";
int length = word.length();
for (int number = 0; number < length; number++) {
    for (int inner = 0; inner < number; inner++) {
        System.out.print(word.charAt(inner));
    }
    System.out.println("");
}
String word=“Sugar”;
int length=word.length();
用于(整数=0;数字<长度;数字++){
for(int-inner=0;inner

外部(第一个)循环控制要打印的字符数,内部(第二个)循环实际打印每个字符,从开始到要打印的字符数…(注意:这将打印一个前导空格,因此您可能需要在其中使用
if
来控制是否重要)我建议使用
String.substring(intstartindex,intendindex)

对于您来说,您的程序如下所示:

String s = "Sugar";
for(int i = 0; i < s.length() - 1; i++) {
    System.out.println(s.substring(0,i)); 
}
String s=“Sugar”;
对于(int i=0;i

请记住startIndex是包含的,endIndex是独占的。所以
“Sugar”。子字符串(0,3)
将给出“Sug”

“我这样做了,它使单词一个字母一个字母地显示”…这不是你想要的吗?不,它输出这个:S u g a r而不是S su Sug Sugar louie,如果答案对您有帮助且正确,您确实应该单击计票下的绿色复选标记,在您的问题上标记一个已接受的答案。@AlexK,因为OP可能不允许使用
子字符串
,因为它不会在循环中创建临时对象,从而提高效率,因为给这只猫剥皮的方法不止一种…明白了。我只是想知道…这并不意味着只有一种方法可以做到!如果不允许使用
substring()
,则第二个选项是最清晰的解决方案+1@MadProgrammer
substring()
比StringBuilder效率更高,因为它重用源字符串中的原始
char[]
sb.toString()
无论如何都会创建一个新的字符串对象……但是
subString
它仍然在从每个循环的
char
数组中创建一个新的
String
。(我想演示一种
String
串联的方法,而不是使用
String+String
,这真的很糟糕)@一个字符串包含一个
char[]
、开始索引和结束索引
String.substring()
创建一个新的字符串对象,但使用不同的开始/结束索引重用
char[]
。它仍然比
String+String
sb.toString()
好得多,因为除了
new String()
@GaborSch之外,它们都创建了一个
new char[]
新字符
this.value=Arrays.copyOfRange(value,offset,offset+count),所以差别不大。当涉及到
String
串联(特别是在循环中),
StringBuilder
将是一个稍好的方法,仅此而已:)-在这种情况下,这意味着
StringBuilder
将创建一个
char
数组,一次,并在每个循环上创建一个新的
String
,而不是每个循环上的一个新的
char
数组和一个新的
String
。。。
String s = "Sugar";
for(int i = 0; i < s.length() - 1; i++) {
    System.out.println(s.substring(0,i)); 
}