如何调试有关字符串和整数的错误

时间:2018-10-21 08:43:40

标签: java

我想知道输入数字的位置,所以我决定使用解析将String类型转换为int数据类型,源代码如下:

public static void main (String [] Args) {
    Scanner input = new Scanner (System.in);
    String x = "0" ;
    int number = Integer.parseInt(x);

    System.out.print("\nEnter 5 numbers: ");
    number = input.nextInt();

    if ((x.charAt(0) == x.charAt (4)) && (x.charAt(1) == x.charAt(3))) {
        System.out.print("The set of numbers is equal to its original value");
    } else {
        System.out.print("The set of numbers is not equal to its original value");
    }   
}   

编译文件后,它将无法运行,并且出现此错误

  

线程“主”中的异常java.lang.StringIndexOutOfBoundsException:   字符串索引超出范围:4           在java.base / java.lang.StringLatin1.charAt(未知来源)           在java.base / java.lang.String.charAt(未知源)           在activity10.main(activity10.java:12)

2 个答案:

答案 0 :(得分:1)

方法charAt(i)返回String ith 个字符(从索引0开始)。这意味着如果您要呼叫yourString.charAt(k),则yourString必须至少具有 k + 1 个字符。

根据您的代码

String x = "0";

x始终是 "0"。因此,对 i> 0 的任何调用x.charAt(i)都将产生StringIndexOutOfBoundsException

更新

以下代码可以满足您的需求吗?

public static void main(String[] args) {
    Scanner input = new Scanner (System.in);

    System.out.print("\nEnter 5 numbers: ");
    String x = input.next();

    if ((x.charAt(0) == x.charAt (4)) && (x.charAt(1) == x.charAt(3))) {
        System.out.print("The set of numbers is equal to its original value");
    } else {
        System.out.print("The set of numbers is not equal to its original value");
    }
}

答案 1 :(得分:0)

您正在尝试使用扫描仪输入

获取输入号码

,您不需要这些行

String x = "0" ;
int number = Integer.parseInt(x);

您需要做的就是先获取数字

int number1 = input.nextInt();
int number2 = input.nextInt();
int number3 = input.nextInt();
int number4 = input.nextInt();
int number5 = input.nextInt();

然后从数字比较开始。

此外,您可以阅读一些Java教程,然后开始编码,因为它可以帮助您了解编程基础