Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在我的回文java程序中获取错误_Java - Fatal编程技术网

在我的回文java程序中获取错误

在我的回文java程序中获取错误,java,Java,我创建了一个palindorme java程序,该程序出现错误。错误是int不能转换为boolean 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.print

我创建了一个palindorme java程序,该程序出现错误。错误是int不能转换为boolean

    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++) {}
for(初始计数器;终止条件;增加计数器){

对于(i=0;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");
      }
}
public void checkPalindrome(字符串strToCheck){
char[]arr=strToCheck.toCharArray();
int size=arr.length;
char[]original=Arrays.copyOf(arr,arr.length);
对于(int i=0;i
我们在这里做了什么:

  • 先将字符串反转,然后迭代到一半
  • 使用
    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来修复的

      对循环所做的这些更改使得从
      字符串中最后一个位置开始的字符是
      s.charAt(i)返回的第一个字符
      这样您就可以反转
      字符串了。我想您正试图按照这些思路将字符从末尾添加到
      字符串中

      我还将
      s1=s+s.charAt(I)
      更改为
      s1=s1+s.charAt()
      ,因此添加了正确的
      String
      (但这可能是
      StringBuilder

      s
      s1
      现在的初始条件是
      ,而不是零

      最后,您不能将
      字符串
      相等与
      =
      进行比较,它必须是
      s1.相等

      测试运行:

      输入您的字符串

      赛车

      这是回文


      for循环中的条件似乎不正确。至少我的IDE显示了一个错误。您希望循环条件中的
      l-i-1
      是什么意思?而且您以错误的方式比较字符串(在本例中)-使用
      equals