简体   繁体   English

弦回文节目

[英]String Palindrome Program

I created a string palindrome program, but I am getting a Nullpointer exception. 我创建了一个字符串回文程序,但是出现了Nullpointer异常。

Here is the code that I have written: 这是我编写的代码:

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;

    }
}

I can't figure out how to deal with it and exactly why this error is occuring. 我不知道如何处理它,以及为什么会出现此错误。

The Problem is that char c1[]; 问题是char c1[]; is not inizalized. 没有被inizalized。 Therefore this line give you a nullpointer: 因此,此行为您提供了一个空指针:

String s2 = new String(c1);

Inizalized the variable: 初始化变量:

char c1[] = {};

Now the NullPointer is gone, but thats not the final version, you need to fill it with your logic. 现在NullPointer消失了,但是那不是最终版本,您需要用逻辑填充它。

There can be several thing to do such that this code is working. 要使此代码正常工作,可以做几件事。 you can try this. 你可以试试看

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();

It is easy to reverse array of character or integer simply you traverse from the last index till the first index. 只要从最后一个索引遍历到第一个索引,就很容易反转字符或整数数组。

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.
}

But I try to check user given string is Palindrome by ignoring the case and without ignoring the case. 但是我尝试通过忽略大小写而不忽略大小写来检查用户给定的字符串是否为回文。

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);
    }
}

Simple Output: 简单输出:

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

Here is my code : 这是我的代码:

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");
            }
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM