我正在尝试使用递归来反转句子并向后打印出来。现在在它提示我输入一个句子之后,它不允许我输入任何输入并结束。 sc.nextLine()有什么问题吗?如何将句子输入为字符串。
private static void testNum3()
{
System.out.print("Type in a sentence:");
String sentence= sc.nextLine();
System.out.println(reverse(sentence));
}
public static String reverse (String sentence)
{
if (sentence.length()== 0)
return sentence;
return reverse(sentence.substring(1)) + sentence.charAt(0);
}
答案 0 :(得分:0)
我在其他地方使用sc.next()。他们都必须一样吗?
不,但你必须小心处理EOL或" End-Of-Line"令牌正确。如果你打电话给sc.next()
并留下一个悬空的EOL令牌,那么它将被吞下#34;下次你打电话sc.nextLine()
阻止你收到输入。
一种解决方案:当您需要处理EOL令牌时调用sc.nextLine()
。
例如,如果您从用户那里获得了一个int并且唯一输入了该行,有时您必须这样做:
int myVar = sc.nextInt();
sc.nextLine(); // swallow dangling EOL token with this call
// now you can safely call this below
String myString = sc.nextLine();
答案 1 :(得分:-1)
试一试
import java.io.IOException;
import java.util.Scanner;
public class CoreJavaTest {
public static void main(String[] args) throws IOException {
// TODO code application logic here
Scanner sc = new Scanner(System.in);
String sentence = "";
while (true) {
System.out.print("Enter sentence:");
sentence = sc.nextLine();
if (sentence.equals("exit")) {
System.out.println("Exiting...");
break;
}
reverse(sentence);
System.out.println("");
}
}
public static void reverse(String args) {
if (args.length() != 0) {
System.out.print(args.charAt(args.length() - 1));
reverse(args.substring(0, args.length() - 1));
}
}
}