Java:字符串索引超出范围,同时检查数字是否为回文

时间:2016-11-05 15:57:28

标签: java string

因此,为了检查数字是否是回文,我将其转换为字符串。我知道在SO上有一个类似的问题,但我已经检查了解决方案,所以任何帮助都将不胜感激。 为什么我会得到"Exception in thread "main" java.lang.NumberFormatException:

我的代码在这里;

/*
(Palindrome integer) Write the methods with the following headers

// Return the reversal of an integer, i.e., reverse(456) returns 654
public static int reverse(int number)

// Return true if number is a palindrome
public static boolean isPalindrome(int number)

Use the reverse method to implement isPalindrome. A number is a palindrome
if its reversal is the same as itself. Write a test program that prompts the
user to enter an integer and reports whether the integer is a palindrome.
*/

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        System.out.println("Please enter a number");
        Scanner input = new Scanner(System.in);
        int number = input.nextInt();
        if (isPalindrome(number))
            System.out.println("The number is a palindrome");
        else
            System.out.println("The number is not a palindrome");

    }

    public static int reverse(int number) {
        String reverse = "";
        String n = number + " ";
        for (int i = n.length() - 1; i >= 0; i--) {
            reverse += n.charAt(i);
        }

        return Integer.parseInt(reverse);
    }

    public static boolean isPalindrome(int number) {
        return number == reverse(number) ? true : false;
    }
}

2 个答案:

答案 0 :(得分:2)

问题在于反向功能。 实际上,指令String n = number + " ";是值number与空字符串的串联。这不是一个数字,后来在指令return Integer.parseInt(reverse);处给出了NomberFormatException。您应该使用String n = Integer.toString(number);

以下是已审核的方法

 public static int reverse(int number) {
    String reverse = "";
    String n = Integer.toString(number); // + " ";
    System.out.println(reverse);
    for (int i = n.length() - 1; i >= 0; i--) {
        reverse += n.charAt(i);
    }

    return Integer.parseInt(reverse);
 }

答案 1 :(得分:0)

您应该更改以下行:

String n = Integer.toString(number);

以下内容:

mysqli_connect($dbserver, $username, $password, $dbname);

因为您尝试使用空格作为 int 的最后一个字符来解析 String ,所以它会抛出 NumberFormatException