gpt4 book ai didi

java - 我怎样才能让它重复呢?

转载 作者:太空宇宙 更新时间:2023-11-04 07:17:02 24 4
gpt4 key购买 nike

所以我的作业要求编写一个名为 repl 的方法,该方法接受一个字符串和多次重复作为参数,并返回连接多次的字符串。例如,调用 repl("hello", 3) 应返回“你好你好你好”。如果重复次数为零或更少,则该方法应返回空字符串。

这是我编写的代码之一。

import java.util.Scanner;

public class Hello {
public static void main (String [] args){
Scanner console = new Scanner (System.in);
System.out.println("Enter the word");
String word = console.next();
System.out.println("Enter the number");
int y = console.nextInt();

repl(word, y);

}

public static String repl(String word, int y) {
if (y <= 0) {
return null;
}else {
System.out.print(repl(word, y)); //line 21, error is here
}
return word;
}

}

目前这段代码正在编译,但是当我运行它时,它会打印出来

at Hello.repl(Hello.java:21)

一遍又一遍。

我还编写了一个 for 代码,该代码只会打印一次该单词。我已经为此工作了大约一个小时,但我仍然很困惑如何让这个词重复 y 次。

有人可以帮我理解这段代码吗?

最佳答案

您需要传入 y递减值:

public static String repl(String word, int y) {
if (y <= 0) {
return null;
} else {
System.out.print(repl(word, y - 1));
}

return word;
}

这样,递归调用的每次迭代都会将计数减 1,当达到 0 时结束。

请注意,当 y 达到 0 时,您可能需要返回 word,因为它需要最后一次打印:

public static String repl(String word, int y) {
if (y <= 0) {
return word;
} else {
System.out.print(repl(word, y - 1));
}

return word;
}

Example

此时,请注意我们无论如何都会返回 word,这使得第一个 if 条件变得不必要。您的整个功能可以简化为:

public static String repl(String word, int y) {
if (y > 0) System.out.print(repl(word, y - 1));

return word;
}

当然,使用 for 循环可能更容易做到这一点,但我假设递归是您作业的一部分。

关于java - 我怎样才能让它重复呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com