Java 字符串回文程序

Java 字符串回文程序,java,palindrome,Java,Palindrome,我创建了一个字符串回文程序,但是我得到了一个空指针异常 以下是我编写的代码: public class JavaApplication2 { /** * @param args the command line arguments */ char c[]={'i','c','i','c','i'}; String s = new String(c); String s1=null; int i,j; char c1[];

我创建了一个字符串回文程序,但是我得到了一个空指针异常

以下是我编写的代码:

public class JavaApplication2 {

    /**
     * @param args the command line arguments
     */
    char c[]={'i','c','i','c','i'};
    String s = new String(c);
    String s1=null;
    int i,j;
    char c1[];
    public static void main(String[] args) {
        //TODO code application logichere

        JavaApplication2 ja=new JavaApplication2();
        ja.palindrome();
        ja.ans();
        boolean b1= ja.ans();
        System.out.println(b1);
    }

    public void palindrome()
    {
        for(i=s.length()-1,j=0;i>=0;i--)
        {
            c1[j]=s.charAt(i);
            j++;
        }
    }

    public boolean ans()
    {
        String s2= new String(c1);
        if(s2.equals(s))
        {
            return true;
        }
        else
            return false;

    }
}

我不知道如何处理它,也不知道为什么会发生这个错误。

问题是
char c1[]未被日化。因此,此行将为您提供一个空指针:

String s2 = new String(c1);
将变量化:

char c1[] = {};

现在空指针消失了,但这不是最终版本,您需要用您的逻辑填充它。

要使此代码正常工作,可以做一些事情。你可以试试这个

public class JavaApplication2 {
char c[]={'i','c','i','c','i'};
String s = new String(c);
int i,j;
char c1[]=new char[s.length()] ; // initialize c1
public static void main(String[] args) {
    JavaApplication2 ja=new JavaApplication2();
    ja.palindrome();
    ja.ans();
    boolean b1= ja.ans();
    System.out.println(b1);
}

public void palindrome()
{
    for(i=s.length()-1,j=0;i>=0;i--)
    {
        c1[j]=s.charAt(i);// populate c1
        j++;
    }
}

public boolean ans()
{
    String s2= new String(c1);
    if(s2.equals(s))// check equality of s2 and s
    {
        return true;
    }
    else
        return false;

}
}

新的StringBuilder(str1).reverser().toString()

只要从最后一个索引遍历到第一个索引,就可以轻松反转字符或整数数组

int[] myArray = new int[10];//Array size is 10
//Traverse from last index= 9 to the first Index= 0 
for(int i= myArray.length-1; i>= 0 ; --i){
    System.out.print(myArray[i]);//here i is last index=10-1=9.
}
但我试图通过忽略大小写和不忽略大小写来检查用户给定的字符串是否具有回文性

import java.util.Scanner;

public class Palindrome {

    public void StringPalindrome(String original) {
        String reverse = "";
        for (int i = original.length() - 1; i >= 0; i--) {
            reverse += original.charAt(i);
        }
        if (original.equals(reverse)) {
            System.out.println("Entered string is palindrome \n" + "Original = " + original + "\n Reverse = " + reverse);
        } else {
            System.out.println("Entered string is not a palindrome.");
        }
    }

    public void StringPalindromeIgnoreCase(String original) {
        String reverse = "";
        for (int i = original.length() - 1; i >= 0; i--) {
            reverse += original.charAt(i);
        }
        if (original.equalsIgnoreCase(reverse)) {
            System.out.println("Entered string is palindrome \n" + "Original = " + original + "\n Reverse = " + reverse);
        } else {
            System.out.println("Entered string is not a palindrome.");
        }
    }

    public void reverseArrayInteger(int number[]) {
        for (int i = number.length - 1; i >= 0; i--) {
            System.out.print(number[i]);
        }
        System.out.println(" ");
    }

    public static void main(String[] args) {
        Palindrome myPalindrom = new Palindrome();
        testReverseIntegerArray(myPalindrom);
        testStringPalindrome(myPalindrom);
        testStringPaligrameIgnoreCase(myPalindrom);
    }

    public static void testReverseIntegerArray(Palindrome myPalindrom) {
        int[] number = {1, 3, 5, 7, 8};
        myPalindrom.reverseArrayInteger(number);
    }

    public static void testStringPalindrome(Palindrome myPalindrom) {
        Scanner in = new Scanner(System.in);
        String original;
        System.out.println("Enter a string to check if it is a palindrome");
        original = in.nextLine();
        myPalindrom.StringPalindrome(original);
    }

    public static void testStringPaligrameIgnoreCase(Palindrome myPalindrom) {
        Scanner in = new Scanner(System.in);
        String original;
        System.out.println("Enter a string to check if it is a palindrome");
        original = in.nextLine();
        myPalindrom.StringPalindromeIgnoreCase(original);
    }
}
简单输出:

87531 
Enter a string to check if it is a palindrome
MADAM
Entered string is palindrome 
Original = MADAM
 Reverse = MADAM
Enter a string to check if it is a palindrome
MaDAm
Entered string is palindrome 
Original = MaDAm
Reverse = mADaM
这是我的密码:

class MyClass

{


public static void main (String[] args)


    {
        Scanner sc=new Scanner(System.in);

            int T=sc.nextInt();


            for(int j=0;j<T;j++){
            String str=sc.next();

            String revstring="";

            for(int i=str.length()-1;i>=0;--i){

            revstring +=str.charAt(i);
            }

            if(revstring.equalsIgnoreCase(str)){
            System.out.println("Yes");
            }
            else{
            System.out.println("No");
            }
        }
    }
}
class-MyClass
{
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
int T=sc.nextInt();
对于(int j=0;j=0;--i){
revstring+=str.charAt(i);
}
if(revstring.equalsIgnoreCase(str)){
System.out.println(“是”);
}
否则{
系统输出打印项次(“否”);
}
}
}
}

请发布完整的堆栈跟踪。您能告诉我们在哪一行引发异常吗?
c1
null
,异常应在此处发生:
String s2=新字符串(c1)在java.lang.String处的线程“main”java.lang.NullPointerException(String.java:176)在javaapplication2.javaapplication2.ans(javaapplication2.java:42)在javaapplication2.javaapplication2.main(javaapplication2.java:26)处编译异常时发布bean的结果@我尝试了你的建议。它现在给了arrayindexout f绑定异常,现在将抛出
ArrayIndexOutOfBounds
。你应该提一下。或者用size=
c1.length
创建一个新数组。不,没有抛出错误。我测试了它,请在发布错误评论之前自己测试一下(Hank u:)。。但是我很担心我使用的dt d逻辑也是正确的,但它仍然在工作。thnx newz:)事实上,我想知道我的代码出了什么问题。我知道f ds one..thanx:)