I'm pretty new to java and I have nested Try Catch code that prints 3 times! can you tell me why? I get 3 int from Command Line and has to be validated and check if they in range and i am using try and catch. but the answers prints 3 times!
// Global Constants
final static int MIN_NUMBER = 1;
final static int MAX_PRIME = 10000;
final static int MAX_FACTORIAL = 12;
final static int MAX_LEAPYEAR = 4000;
// Global Variable
static int a, b, c;
public static void main(String[] args) {
// String[] myNumbers= new String [3];
// int x =Integer.parseInt(args[0]);
for (int i = 0; i < args.length; i++) {
// System.out.print(args[i]+" ");
validateInput(args[0], args[1], args[2]);
}
}
// Validate User Input
public static boolean validateInput(String value1, String value2, String value3) {
boolean isValid = false;
try {
try {
try {
a = Integer.parseInt(value1);
if (!withinRange(a, MIN_NUMBER, MAX_PRIME)) {
System.out.println(
"The entered value " + value1
+ " is out of range [1 TO 10000].");
}
isValid = true;
} catch (Exception ex) {
System.out.println(
"The entered value " + value1
+ " is not a valid integer. Please try again.");
}
b = Integer.parseInt(value2);
if (!withinRange(b, MIN_NUMBER, MAX_FACTORIAL)) {
System.out.println(
"The entered value " + value2
+ " is out of range [1 TO 12].");
}
isValid = true;
} catch (Exception ex) {
System.out.println(
"The entered value " + value2
+ " is not a valid integer. Please try again.");
}
c = Integer.parseInt(value3);
if (!withinRange(c, MIN_NUMBER, MAX_LEAPYEAR)) {
System.out.println(
"The entered value " + value3
+ " is out of range [1 TO 4000].");
}
isValid = true;
} catch (Exception ex) {
System.out.println(
"The entered value " + value3
+ " is not a valid integer. Please try again.");
}
return isValid;
}
// Check the value within the specified range
private static boolean withinRange(int value, int min, int max) {
boolean isInRange = true;
if (value < min || value > max) {
isInRange = false;
}
return isInRange;
}
答案打印了3次,因为您已将validateInput方法调用放入main()
的for
循环中,如果有三个参数,则将其运行3次。
I suggest writing the validateInput
method to validate a single string. Add two arguments for the min and max allowed int values.
public static boolean validateInput(String value, int minValue, int maxValue) {
try {
integer intVal = Integer.parseInt(value);
if (intVal < minVal || intVal > maxValue) {
System.out.println("The entered value " + value
+ " is out of range [" + minValue + " TO " + maxValue + "].");
return false;
}
} catch (Exception e) {
System.out.println("The entered value " + value
+ " is not a valid integer. Please try again");
return false;
}
return true;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.