Ошибка, указанная в заголовке вашего сообщения, противоречит ошибке, указанной в вашем фактическом сообщении. Ошибка в заголовке означает, что вы принимаете более одного аргумента, тогда как первый аргумент был успешным, но второго аргумента не было. Ошибка, указанная в вашем теле сообщения, означает, что аргумент не был предоставлен вообще. Что это?
На основании ошибки, указанной в вашем сообщении,
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
аргументы не обнаружены. Другими словами, args [] String Array ничего не содержит (0 элементов) ... при запуске из командной строки терминала не было передано никаких аргументов.
Чтобы защитить приложение от этой ситуации, вы можете сделать что-то вроде this:
public static void main(String args[]) {
// Were arguments supplied?
if (args.length == 0) {
// No...
System.out.println("Failure! - No Argument Supplied!");
return;
}
/* Is the argument supplied a string representation of a signed
or unsigned Integer or double/float numerical value? */
else if (!args[0].matches("-?\\d+(\\.\\d+)?")) {
// No...
System.out.println("Failure! - Invalid Numerical Argument Supplied!");
return;
}
double t = 0.0d;
int r = 0;
// Has a double or float value been supplied?
if (args[0].contains(".")) {
// Yup ... So let's convert to double.
t = Double.parseDouble(args[0]);
}
else {
// Nope ... So let's convert to Integer (int).
r = Integer.parseInt(args[0]);
}
// Display the result in Console Window.
System.out.println("r = " + r + ", t = " + t);
}
Вам также необходимо принять к сведению, что вы не можете передать строковое представление значения с плавающей запятой в Integer.parseInt () метод. Это связано с тем, что точка (. ) считается буквенным символом (например, пробел или буква A), который метод Integer.parseInt () не примет. Если вы попробуете, NumberFormatException будет сброшено, и ваше приложение остановится из-за ошибки. Однако метод Integer.parseInt () будет принимать значение с префиксом -
или +
символа (ie: Integer.parseInt ("+ 50") . Мы также учли это в приведенном выше примере кода (см. Комментарии в коде).