我不是很擅长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));
}
}
答案 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;
}