我想在使用for循环的java中检查字符串是否是回文。我收到错误ArrayIndexOutOfBoundException

时间:2017-06-08 08:49:46

标签: java

我想使用t = 27; % 27th sub-matrix; ujTt = U(:,:,:,t); % 4*4*16 matrix 循环检查Java中的字符串是否为回文结构。我收到for

ArrayOutOfBoundException

3 个答案:

答案 0 :(得分:0)

尝试

for(i=0,j=len-1;j>=0;j--,i++)

答案 1 :(得分:0)

您可以进行O(N / 2)操作:

char[] chars = YOUR_CHAR_ARR;
boolean palindrome = true;

for (int i = 0, j = chars.length - 1
; i <= Math.floorDiv(chars.length, 2) && j >= chars.length / 2 
; i++, j--)
{
    if (chars[i] != chars[j])
    {
        palindrome = false;
        break;
    }
}

每当您尝试访问不存在的数组的索引时,都会抛出ArrayIndexOutOfBoundException。请记住,大多数语言(包括java)中的数组都以索引0开头(因此最后一个可访问索引的长度为1)。

此外,您不需要第二个char []来检查回文。

答案 2 :(得分:0)

我会告诉你如何检查一个字符串是一个回文或不看下面的代码你会清楚。

import java.io.Scanner;
class PalindromeCheck{
public static void main(String args[]){
Scanner scn=new Scanner();
System.out.println("Enter a String to check it's palindrome ")
String str=scn.next();
//now a String is entered by the user 
//take one int variable to hold the length of the String
//if str="enoch" then length will store 5
int strlen=str.length(); 
String chkpal="";
for(int i=strlen-1;i>=0;i--)
{     
chkpal=chkpal+str.charAt(i);
}  
if(str.equals(chkpal))
System.out.println("It is a palindrome");
else
System.out.println("It is not a palindrome"); 
}
}