问题描述
我正在尝试确定字符串或整数是否是回文(相同,如果取反)。我已经写了一些方法,但是,当我运行代码时,我的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
,如果检查可以使您的代码正常工作。