[quote=utroz][code]static final String[] num = {“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”};
boolean containNum(String arg){
String str = new String("");
for(int i = 0; i < arg.length; i++){
str = Character.toString(arg.charAt(i));
for(int j = 0; j < num.length; j++){
if(str.equals(num[j])) return true;
}
}
return false;
}[/code]
Pensei em algo mais simples, apenas percorrer a string fazendo comparações com os números[/quote]
Isso é reinventar a roda. Um algoritimo O(N²) como o seu, numa aplicação que valida milhares de campos, mata seu processador. Você realmente acha que é mais simples?
Se queres saber se a string contém algum elemento do seu array, troque seu array por um array list:
[code]
private static boolean contemNumero(String string){
List numeros = new ArrayList();
numeros.add(“0”);
numeros.add(“1”);
numeros.add(“2”);
numeros.add(“3”);
numeros.add(“4”);
numeros.add(“5”);
numeros.add(“6”);
numeros.add(“7”);
numeros.add(“8”);
numeros.add(“9”);
for (String numero: numeros) {
if (string.contains(numero))
return true;
}
return false;
}[/code]
Nota: a lista nao precisa ser inicializada ali.
De qualquer forma, nao vejo por quê verificar se uma string comtém algum número char a char sendo que o regex faz isso pra você em uma linha de codigo. Não sei como funciona internamente, mas creio que seja mais rápido do que um for encadeado.
boolean naoContemNumeros = campo.matches("[A-Z a-z Çç]{"+campo.length()+"}");