Вам следует решить следующие проблемы с вашим кодом:
- Хотя это не существенно с точки зрения выполнения, вы всегда должны отображать сообщение для ввода (пример приведен ниже) ; в противном случае пользователь остается невежественным.
System.out.println("Enter a few integers separated by a space: ");
String Input = myObj.nextLine();
Хотя это не существенно с точки зрения выполнения, вы всегда должны следовать
Java соглашениям о присвоении имен например,
int N
должно быть записано как
int n
, а
String[] Inputs
должно быть
String[] inputs
согласно соглашениям об именах. Поскольку вы ничего не делаете с
N
, удалите строку,
int N = myObj.nextInt();
. Даже если вы удалите строку,
int N = myObj.nextInt();
, вы можете грань
NumberFormatException
для ввода типа
10 20 30
, где есть более одного пробела. Вы должны разделить на
"\\s+"
вместо
" "
, который учитывает только один пробел. Обратите внимание, что
"\\s+"
позаботится об одном или нескольких пробелах. Наконец, даже если вы разделите на
"\\s+"
, вы можете столкнуться с
NumberFormatException
для таких вводов, как
10 x 30
, которые имеют нецелую запись например,
x
, который не может быть проанализирован в целое число. Чтобы справиться с такими случаями, вам нужно обработать
NumberFormatException
, как указано ниже:
// ...
for (int i = 0; i < size; i++) {
try {
a[i] = Integer.parseInt(Inputs[i]);
// ...
} catch (NumberFormatException e) {
System.out.println("Ignoring " + Inputs[i] + " as it is not an integer.");
a[i] = Integer.MIN_VALUE;
}
// ...
}
// ...
Обратите внимание, что a[i] = Integer.MIN_VALUE;
устанавливает Integer.MIN_VALUE
в массив для недопустимых записей. Вы можете поставить другое значение, просто игнорируя его согласно вашему требованию. Если вы проигнорируете его, этот индекс будет иметь значение по умолчанию int
, равное 0
.
Не стесняйтесь комментировать в случае каких-либо сомнений / проблем.