我创建了一个palindorme java程序,该程序出现错误。错误是说int无法转换为布尔值。
import java.util.Scanner;
public class palindrome
{
public static void main()
{
Scanner sc = new Scanner(System.in);
int l,i;
String s,s1;
System.out.println("Enter your string");
s = sc.nextLine();
l = s.length();
for(i=0;l-i-1;i++)
{
s1 = s + s.charAt(i);
}
if(s1==s)
System.out.println("This is Palindrome");
else
System.out.println("This is not a Palindrome");
}
}
答案 0 :(得分:1)
对于循环条件来说似乎是错误的。
for(initial counter; condition to terminate; increase counter) {}
for(i=0; i<l; i++) {}
答案 1 :(得分:0)
关于上述答案,您可以尝试其他方法。您不需要花所有的字符串来检查回文。可以像这样遍历数组长度的一半来检查回文-
public void checkPalindrome(String strToCheck){
char[] arr = strToCheck.toCharArray();
int size = arr.length;
char [] original = Arrays.copyOf(arr,arr.length);
for (int i = 0; i < size / 2; i++) {
char temp = arr[i];
arr[i] = arr[size-i-1];
arr[size-i-1] = temp;
}
if(Arrays.equals(arr, original)) {
System.out.println("Palindrome");
} else {
System.out.println("Not a palindrome");
}
}
此处完成的操作:
Arrays.equals()
方法将反向字符串与原始字符串进行比较。答案 2 :(得分:0)
这里有很多事情,首先是固定代码:
public static void main(String [] args)
{
Scanner sc = new Scanner(System.in);
int l,i;
String s = "",s1 = "";
System.out.println("Enter your string");
s = sc.nextLine();
l = s.length();
for(i = l - 1; i >= 0; i--)
{
s1 = s1 + s.charAt(i);
}
if(s1.equals(s))
System.out.println("This is Palindrome");
else
System.out.println("This is not a Palindrome");
}
首先要解决的是您的for
循环,因为您看到自己遇到了错误。通过将初始i
的长度设置为负1,将循环条件更改为i >= 0
,并使用i--
从每个循环的i
中减去1,可以解决此问题。
对循环进行了这些更改,使得从String
的最后一个位置开始的字符是s.charAt(i)
返回的第一个字符,因此您可以反转String
。我认为您正在尝试按照以下步骤进行操作,以将字符从结尾添加到String
。
我也将s1 = s + s.charAt(i)
更改为s1 = s1 + s.charAt()
,因此附加了正确的String
。 (不过,应该是StringBuilder
)。
s
和s1
现在具有""
的初始条件,而不是初始条件。
最后,您无法将String
与==
进行比较,它必须为s1.equals(s)
。
测试运行:
输入您的字符串
赛车
这是回文