字符串打印出多行

时间:2016-03-16 17:49:33

标签: java string

我不是很擅长java,所以这就是为什么有些东西可能没有意义。我只是简单地使用我在网上发现的代码,我知道这是错误的。

我目前的问题是它只是打印一个空白代码;我不知道如何让它像这样打印出来:

输入:

  

APPLE

输出:

  

一个
  AP
  APP
  APPL
  APPLE

当前代码:

import java.util.Scanner;

public class WordGrow
{
    public static void main(String[]args)
    {
        //take your word input
        //enter word as a parameter in WordGrow()
        System.out.println("Please enter the word to *GROW*");
        Scanner scan = new Scanner(System.in);
        String theword = scan.next();
        System.out.println(makeTree(theword, theword.length()));
    }

    public static String makeTree(String word, int len)
    {
        int count = 0;
        //start with the first letter and print
        //and add another letter each time the loop runs
        if (word.length() > 0)
        {
            for(int i = 0; i < word.length();i++)
            {
                return word.substring(0, i++);
            }
        }
        return (word.charAt(1) + makeTree(word, len));
    }
}

4 个答案:

答案 0 :(得分:0)

把Java拿出来。让我们把它拿回笔和纸上。

首先,看一下你要打印的图案。你怎么打印出那个字母的一个字母?你怎么打印两个?

让我们从这个方法开始吧。让我们尝试在该字符串中打印出一个字母。

public void printStringChain(String word) {
    System.out.println(word.substring(0, 1));
}

两个字母怎么样?

public void printStringChain(String word) {
    System.out.println(word.substring(0, 2));
}

word.length() 字母怎么样?

public void printStringChain(String word) {
    System.out.println(word.substring(0, word.length()));
}

我想让你看到的主要是这里有一种模式。为了实现这一点,你可能需要从零到字符串的长度,以便自己打印出每一行。

这是一个开始。我留下了substring内部的细微差别和障碍作为读者的练习。

public void printStringChain(String word) {
    for (int i = 0; i < word.length(); i++) {
        // the question mark relates to i, but in what way?
        System.out.println(word.substring(0, (?)));
    }
}

答案 1 :(得分:0)

如果递归不是强制性的,您可以简单地遍历给定的字符串:

String str = "APPLE";
for(int x=0; x<str.length(); x++){
    System.out.println(str.substring(0, x+1));
}

<强>输出:

A
AP
APP
APPL
APPLE

答案 2 :(得分:0)

一次不能多次返回,在结果传递给调用者的第一时刻。

对于String,有一个效率缓冲类,StringBuilder。

包括空字符串:

public static String makeTree(String word) {
    StringBuiilder sb = new StringBuilder();
    for (int i = 0; i < word.length(); i++){
        sb.append(word.substring(0, i));
        sb.append("\r\n");
    }
    return sb.toString();
}

它使用Windows行尾字符CR + LF aka \r\n。 你可以让这个平台独立,但你明白了。

答案 3 :(得分:0)

WITH RECURSION

public static String makeTree(String word)
{
    if (word.length() <= 1){
        return word;
    }
    return makeTree(word.subSequence(0, word.length()-1).toString()) + System.lineSeparator() + word;
}