Boas estou com dificuldade em fazer a verificação em hexadecimal quando digito um numero que não é hexadecimal e diz que é hexadecimal. será que me podem ajudar a resolver este problema?
O código é este:
public static void main(String[] args) {
Scanner teclado = new Scanner (System.in);
System.out.println("Conversor Hexadecimal");
System.out.println("Introduza um número Hexadecimal");
String conv = teclado.next();
//String conv = Integer.toString(n); //conversão para String
// String.value(n); conversão para String
String carat[] = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","a","b","c","d","e","f"};
StringVerifica(conv, carat);
}
public static void StringVerifica(String conv, String carat[]){
boolean verif = true;
for(int i = 0 ; i < conv.length(); i++){
if(!carat[i].equals(conv.substring(i,i+2))){
verif = true;
System.out.println("O " +conv+ " número é Hexadecimal");
break;
}else{
verif = false;
System.out.println("O" +conv+ "Não é Hexadecimal!");
}
}
}}
Soluções para a tarefa
Respondido por
1
-> for(int i = 0 ; i < conv.length(); i++)
O laço "for" vai de 0 até uma unidade a menos que o o comprimento de "conv"; isso significa que a verificação não ocorrerá com todos os elementos de "carat[]".
Obs.: cuidado com a função "equals", ela pode fazer o que você não espera.
-> if(!carat[i].equals(conv.substring(i,i+2)))
Nessa linha tem a comparação de 1 caractere de carat com dois caracteres de conv; deve ser 'i+1"
Você retorna "false" sempre que o elemento de índice i=0 de "carat" não está em "conv", que é convertido para "true" pelo operador !.Por isso sempre resulta em número hexadecimal. Mas se você digitar "0" que o primeiro elemento de carat, o programa informará que não é hexadecimal.
É possível listar mais erros.
Coloquei uma imagem com um programa que pode analisar para ver se faz o que deseja.
O laço "for" vai de 0 até uma unidade a menos que o o comprimento de "conv"; isso significa que a verificação não ocorrerá com todos os elementos de "carat[]".
Obs.: cuidado com a função "equals", ela pode fazer o que você não espera.
-> if(!carat[i].equals(conv.substring(i,i+2)))
Nessa linha tem a comparação de 1 caractere de carat com dois caracteres de conv; deve ser 'i+1"
Você retorna "false" sempre que o elemento de índice i=0 de "carat" não está em "conv", que é convertido para "true" pelo operador !.Por isso sempre resulta em número hexadecimal. Mas se você digitar "0" que o primeiro elemento de carat, o programa informará que não é hexadecimal.
É possível listar mais erros.
Coloquei uma imagem com um programa que pode analisar para ver se faz o que deseja.
Anexos:
xremix20:
vou testar obrigado
Perguntas interessantes
Matemática,
8 meses atrás
História,
8 meses atrás
Português,
8 meses atrás
Matemática,
1 ano atrás
Matemática,
1 ano atrás
Física,
1 ano atrás
Biologia,
1 ano atrás
Química,
1 ano atrás