我有一个赋值,要求我创建一个Java程序,使用递归来反转输入短语并输出它。例如,给定输入“DATA STRUCTURES AND ALGORITHMS”,程序将输出“算法和结构数据”。
其中一个限制是除了单个本地String变量外,程序中不能使用任何存储或Java集合。
我无法理解如何从多行读取输入数据并在字符串上实现递归方法。我理解递归的一般概念,但是将它实现到Java是一项更困难的任务。
答案 0 :(得分:2)
正如所提出的,这个解决方案会逐字逐句“反转”一个字符串,其中的单词只用一个空格字符分隔。
public class TestClass {
public static String wordReverse(String s) {
int idx = s.indexOf(" ");
if (idx < 0) {
// no space char found, thus, s is just a single word, so return just s itself
return s;
} else {
// return at first the recursively reversed rest, followed by a space char and the first extracted word
return wordReverse(s.substring(idx + 1)) + " " + s.substring(0, idx);
}
}
public static void main(String[] args) {
System.out.println(wordReverse("DATA STRUCTURES AND ALGORITHMS"));
}
}
我无法理解如何从多行读取输入数据
我并不完全明白这一点,但如果您要求如何从stdin读取用户输入,那么请查看 System.in