Чтобы удалить из массива String элементы, которые не соответствуют целым числам, вы можете сделать следующее:
// simple method that doesn't reply on exception handling
String[] vals = { "amdjd", "22arss", "2213", "22133", "alal", "aala", "33"
};
List<String> list = new ArrayList<>();
for (String s : vals) {
// check to ensure all characters are digits.
if (s.replaceAll("\\d", "").equals("")) {
list.add(s);
}
}
String[] result = list.toArray(new String[0]);
System.out.println(Arrays.toString(result));
Иногда помогает вспомогательный метод, который делает весь процесс чище. Оба приведенных ниже варианта отфильтровывают все, что не является числом.
List<String> list = new ArrayList<>();
for (String s : vals) {
if (isANumber(s)) {
list.add(s);
}
}
result = list.toArray(new String[0]);
System.out.println(Arrays.toString(result));
Использование потоков Java 8+.
result = Arrays.stream(vals).filter(a -> isANumber(a)).toArray(
String[]::new);
System.out.println(Arrays.toString(result));
Вспомогательный метод для проверки, является ли строка числом.
private static boolean isANumber(String s) {
try {
Double.parseDouble(s);
return true;
}
catch (IllegalArgumentException ne) {
return false;
}
}