我的回文Java程序中出现错误

时间:2019-09-11 18:08:01

标签: java

我创建了一个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");
        }
    }

3 个答案:

答案 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)。

ss1现在具有""的初始条件,而不是初始条件。

最后,您无法将String==进行比较,它必须为s1.equals(s)

测试运行:

  

输入您的字符串

     

赛车

     

这是回文