簡體   English   中英

我的回文Java程序中出現錯誤

[英]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 )。

現在, ss1的初始條件為""而不是什么。

最后,您不能將String equal與==進行比較,它必須是s1.equals(s)

測試運行:

輸入你的字符串

賽車

這是回文

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM