如何解决确定整数/字符串是否是回文,如果不是,则返回反转的字符串/整数
我正在尝试确定字符串或整数是否是回文(相同,如果取反)。我已经写了一些方法,但是,当我运行代码时,我的isPalindromeString()和isPalindromeInteger()方法总是出错,说这些方法“必须返回布尔类型”。我的方法中有setup子句,可根据我的if语句返回true / false。不知道我在做什么错。任何指导将不胜感激。谢谢。 PS:我试图不使用任何数组,数据结构和/或类方法。
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
String userInput;
System.out.println("Would you like to enter a string or integer?");
userInput = keyboard.nextLine().toLowerCase();
while(!userInput.equals("string") && !userInput.equals("integer"))
{
System.out.println("Invalid input. Try again. ");
userInput = keyboard.nextLine().toLowerCase();
}
if(userInput.equals("string"))
{
System.out.println("Enter the string now: ");
String s;
s = keyboard.nextLine();
if(isPalindromeString(s))
{
System.out.println("Yes,the string is a palindrome.");
}
else
{
System.out.println("No,the string is not a palindrome.");
System.out.println("The reverse of the string is: " + reverseString(s));
}
}
else if(userInput.equals("integer"))
{
System.out.println("Enter the number now: ");
int i;
i = keyboard.nextInt();
if(isPalindromeInteger(i))
{
System.out.println("Yes,the integer is a palindrome.");
}
else
{
System.out.println("No,the integer is not a palindrome.");
System.out.println("The reverse of the integer is: " + reverseInteger(i));
}
keyboard.nextLine();
}
}
public static boolean isPalindromeInteger(int a)
{
int counter=0;
String s = Integer.toString(a);
int reverseCounter = s.length()-1;
if(isEven(s.length()))
{
while(counter!=(s.length()/2))
{
if(s.charAt(counter)!=s.charAt(reverseCounter))
{
return false;
}
counter++;
reverseCounter--;
}
return true;
}
else if(!isEven(s.length()))
{
while(counter!= (s.length()/2))
{
if(s.charAt(counter)!=s.charAt(reverseCounter))
{
return false;
}
counter++;
reverseCounter--;
}
return true;
}
}
public static boolean isPalindromeString(String s)
{
int counter=0;
int reverseCounter = s.length()-1;
if(isEven(s.length()))
{
while(counter!=(s.length()/2))
{
if(s.charAt(counter)!=s.charAt(reverseCounter))
{
return false;
}
counter++;
reverseCounter--;
}
return true;
}
else if(!isEven(s.length()))
{
while(counter!= (s.length()/2))
{
if(s.charAt(counter)!=s.charAt(reverseCounter))
{
return false;
}
counter++;
reverseCounter--;
}
return true;
}
}
public static int reverseInteger(int a)
{
String s = Integer.toString(a);
String temp = new String();
for(int i = (s.length()-1); i >=0; i--)
{
temp = temp + s.charAt(i);
}
int num = Integer.parseInt(temp);
return num;
}
public static String reverseString(String s)
{
String temp = new String();
for(int i = (s.length()-1); i >=0; i--)
{
temp = temp + s.charAt(i);
}
return temp;
}
public static boolean isEven(int a)
{
if(a % 2 ==0)
return true;
else
return false;
}
解决方法
在isPalindromeString()
和isPalindromeInteger()
方法中,if / elif块之外都没有return语句。只需在您的else后面添加一个return false
,如果检查可以使您的代码正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。