我收到了这条消息:当我完成解析有关在递归循环中反向打印字符串的练习时,作业的左侧必须是变量。 我只是想知道是否有人可以提供解释? 错误信息出现在最后一行......我不明白,为什么? 有我的代码:
import java.util.Scanner;
public class Excersise {
public static void main(String[] args) {
// Create a Scanner
Scanner input = new Scanner(System.in);
//Prompt the user to enter a string
System.out.print("Enter a string: ");
String s = input.nextLine();
reverseDisplay(s);
}
public static void reverseDisplay(String value) {
//Base case
if (value.length() < 2) {
System.out.println(value);
} else {
//Recursion
reverseDisplay(value.substring(1)) + value.charAt(0); <--error
}
}
}
答案 0 :(得分:1)
import java.util.Scanner;
public class Exercise {
public static void main(String[] args) {
// Create a Scanner
Scanner input = new Scanner(System.in);
//Prompt the user to enter a string
System.out.print("Enter a string: ");
String s = input.nextLine();
reverseDisplay(s);
System.out.println();
}
public static void reverseDisplay(String value) {
//Base case
if (value.length() < 2) {
System.out.print(value);
} else {
//Recursion
//calls for string without first char
reverseDisplay(value.substring(1));
//prints first char
System.out.print(value.charAt(0));
}
}
}
这很有效。你的递归方法是在正确的轨道上,但你想在字符串的其余部分调用方法后打印第一个字符。我还在main的末尾添加了另一个println,因此反转的字符串将出现在它自己的行上
您得到的编译器错误是因为编译器认为该行应该是一个赋值(如int a = b + c
)并且没有看到=。
答案 1 :(得分:0)
您需要将方法的返回类型更改为String并将其返回并在主方法中打印
public class Exercise{
public static void main(String[] args) {
// Create a Scanner
Scanner input = new Scanner(System.in);
//Prompt the user to enter a string
System.out.print("Enter a string: ");
String s = input.nextLine();
System.out.println(reverseDisplay(s));
}
public static String reverseDisplay(String value) {
//Base case
if (value.length() < 2) {
return value;
} else {
//Recursion
return reverseDisplay(value.substring(1)) + value.charAt(0);
}
}
}