Java 仅使用嵌套循环测试回文

Java 仅使用嵌套循环测试回文,java,nested-loops,palindrome,Java,Nested Loops,Palindrome,我需要编写一个程序,从用户那里获取一个字符串,并测试它是否是回文。这必须通过嵌套循环来完成:我无法编写返回答案的方法。我还必须不断接受字符串输入并测试它们,直到用户输入一个空行,此时程序打印“再见”并终止。我遇到的问题是让程序在两个可能的输入点(是回文,不是)之后接受输入,然后在循环中使用新的输入,每次打印适当的行 下面是输出应该是什么样子的: 输入一个字符串:rotor 转子是一个回文 输入一个字符串:mummy 木乃伊不是回文 输入一个字符串: 空行读取。再见 这就是我到目前为止所做的,它测

我需要编写一个程序,从用户那里获取一个字符串,并测试它是否是回文。这必须通过嵌套循环来完成:我无法编写返回答案的方法。我还必须不断接受字符串输入并测试它们,直到用户输入一个空行,此时程序打印“再见”并终止。我遇到的问题是让程序在两个可能的输入点(是回文,不是)之后接受输入,然后在循环中使用新的输入,每次打印适当的行

下面是输出应该是什么样子的:

输入一个字符串:rotor

转子是一个回文

输入一个字符串:mummy

木乃伊不是回文

输入一个字符串:

空行读取。再见

这就是我到目前为止所做的,它测试每个输入并返回正确的语句,但当输入为空时,它什么也不做:

System.out.print("Enter a string: ");
String input = in.next();
if (input.length() > 0) {
     int x = 0;
     int y = input.length()-1;
     while (x < y) {
          if (input.charAt(x) == input.charAt(y)) {
               x++;
               y--;
          }
          else {
               System.out.println(input + " is NOT a palindrome.");
               System.out.println("Enter a string: ");
               input = in.next();
          }
          System.out.println(input + " is a palindrome.");
          System.out.println("Enter a string: ");
          input = in.next();
     }
}
else {
     System.out.print("Empty line read - Goodbye!");
}
System.out.print(“输入字符串:”);
字符串输入=in.next();
if(input.length()>0){
int x=0;
int y=input.length()-1;
while(x

有什么想法吗?顺便说一句,这是家庭作业,所以我不是在寻找答案,而是在寻找线索,或者我需要寻找的东西。

好的,既然这是你的家庭作业,我就给你一个关于如何继续的简要描述:-

  • 因为您需要不断地接受用户输入,所以可能需要某种循环,这种循环可以一直持续到达到某个条件为止(您可以想,这里将使用什么循环构造)

  • 其次,您需要询问用户何时想要退出,所以您需要指定退出条件

  • 第三,为了检查回文,您需要检查一个字符串的反面

  • 由于必须使用嵌套循环,因此可以在循环条件下使用输入字符串的
    长度记住,您只需循环到长度的一半即可。为什么,你需要找出答案。。然后,比较第一个字符和最后一个字符,然后比较第二个字符和第二个字符。。直到字符匹配。。您需要确定何时退出循环

我想这些信息会让你开始

还有一件事。。可能您在使用任何方法时都会受到限制,但在
main()
中执行所有操作绝对是一个坏主意和丑陋的设计。。事实上,您的任何方法都不应执行多个任务。。尤其是
main()
方法的理想长度应该只有4-5行


在编写方法时,如果您认为这一部分有所不同,请将其移到另一个方法之外,然后调用它。。这是您应该编码的方式。

“我无法编写返回答案的方法”-您可以而且应该这样做。将所有代码放入
main
函数不是很好的设计。仅仅因为您使用循环并不意味着您不能将每个抽象级别移动到它自己的函数。“游戏循环”(一遍又一遍地请求输入)可能在
main
中,但当接收到输入时,应该将其传递给函数。该函数可能包含一个循环,尽管该循环的内容作为一个函数也是有意义的。逻辑的任何一个小元素都应该在它自己的函数中。添加了我到目前为止得到的代码。我的问题似乎是让程序在输入为空字符串时打印“再见”位。@mattjulian。。这可能是因为,空字符串包含换行符。。在if..@mattjulian中尝试
input.replaceAll(“(\\r |\\n)”,”).length()>0
。或者你可以试试
input.trim().length()>0
thx,我猜出来了。必须在.nextLine()中将其更改为
。然后我将所有内容移动到一个
while
循环中,该循环测试回文,直到输入一个空行。是的。。你说得对。。如果不希望将结束换行符添加到输入中,则应使用
nextLine
。。好:)