Добрый день.
В массиве слов найти слова состоящие только из цифр.
Вот, одно из возможных решений задачи:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] words = new String[]{"qqqqqqqqqqwe", "qwer", "123", "4321"};
char a = 'a';
StringProcessor stringProcessor = new StringProcessor();
List<String> wordsContainingOnlyDigits = stringProcessor.findWordsContainingDigits(words);
wordsContainingOnlyDigits.forEach(System.out::println);
}
}
class StringProcessor {
/**
* Метод находит слова, которые состоят только из цифр
* @param words массив слов
* @return список слов, состоящих из цифр
*/
public List<String> findWordsContainingDigits(String[] words) {
List<String> wordsContainingOnlyDigits = new ArrayList<>();
// Итерируем по массиву слов
for (String word : words) {
// получаем массив символов из слова
char[] wordChars = word.toCharArray();
// Boolean[] isDigits = new Boolean[wordChars.length];
boolean[] isDigits = new boolean[wordChars.length];
// итерируем по массиву символов
for (int i = 0; i < wordChars.length; i++) {
char currentChar = wordChars[i];
// проверяем является ли символ цифрой
if (Character.isDigit(currentChar)) {
isDigits[i] = true;
} else {
// если нет, то проверяем следующее слово
break;
}
}
// если все значения isDigits true, то значит слово состоит из цифр
if (areAllTrue(isDigits)) {
// добавляем слово в список
wordsContainingOnlyDigits.add(word);
}
}
return wordsContainingOnlyDigits;
}
/**
* Метод проверяет boolean массив на истинность
* @param array boolean массив
* @return boolean
*/
private static boolean areAllTrue(boolean[] array)
{
for(boolean b : array) if(!b) return false;
return true;
}
}
Если таких слов несколько, найти второе из них?
Не совсем понятно, что является "вторым из них".
Что касается вашего кода, то:
зачем конвертировать строку в строку и затем доставать массив символов
char[] chars = String.valueOf(element).toCharArray();
можно же:
char[] chars = element.toCharArray();
тут итерция неверная:
for (int i = 0; i < chars.length - 1; i++) {
либо так:
i < chars.length;
либо так:
i <= chars.length - 1;
для проверки является ли символ цифрой есть метод
Character.isDigit()