我正在尝试创建一个程序来计算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);
};
}
}
答案 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));