执行子字符串时字符串索引超出范围

时间:2015-02-12 17:37:32

标签: java if-statement

我正在尝试创建一个程序来计算java中整数的3位数之间的乘积。一切正常,直到我输入一个少于3位的数字,然后eclipse抛出这个错误:

Enter a number between 100 and 999
99
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String    index out of range: 3
at java.lang.String.substring(Unknown Source)
at Ex8.main(Ex8.java:23)

我已经搜索了其他解决方案,所以我知道如何重写我的程序以便它可以运行和工作,但我的问题是为什么我的程序只是说"数字不是有效"而不是只是忽略我的if语句?这是我的代码,并提前感谢您的回答。

import java.util.Scanner;

public class Ex8 {

public static void main(String[] args) {
    int number, firstDigit, secondDigit, thirdDigit, product;

    Scanner scan = new Scanner(System.in);

    System.out.println("Enter a number between 100 and 999");

    number = scan.nextInt();
    scan.close();

    if (number <= 99 && number> 999){
        System.out.println("number is not valid");
    }
    else{
        firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
        secondDigit = Integer.parseInt(Integer.toString(number).substring(1, 2));
        thirdDigit = Integer.parseInt(Integer.toString(number).substring(2, 3));
        product = firstDigit*secondDigit*thirdDigit;
        System.out.println(product);
    };
}
}

2 个答案:

答案 0 :(得分:1)

您使用&amp;&amp;

编写了if语句
number <= 99 && number > 999

何时应该使用||

number <= 99 || number > 999

这将修复代码。

答案 1 :(得分:1)

它在这条线99上的失败没有三位数。根据您的代码,它来自其他部分。你必须使用||而不是&amp;&amp;在if语句中。

        thirdDigit = Integer.parseInt(Integer.toString(number).substring(2, 3));