[英]getting an error in my palindrome java program
我創建了一個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");
}
}
For循環條件似乎是錯誤的。
for(initial counter; condition to terminate; increase counter) {}
for(i=0; i<l; i++) {}
除了上述答案,您還可以嘗試其他方法。 您不需要花所有的字符串來檢查回文。 可以通過以下方式檢查回文遍歷數組長度的一半-
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()
方法將反向字符串與原始字符串進行比較。 這里有很多事情,首先是固定代碼:
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)
返回的第一個s.charAt(i)
因此您可以反轉String
。 我認為您正在嘗試按照以下方式進行操作,以將字符從結尾開始添加到String
。
我還將s1 = s + s.charAt(i)
更改為s1 = s1 + s.charAt()
因此添加了正確的String
。 (但是,這可能應該是StringBuilder
)。
現在, s
和s1
的初始條件為""
而不是什么。
最后,您不能將String
equal與==
進行比較,它必須是s1.equals(s)
。
測試運行:
輸入你的字符串
賽車
這是回文
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.