Informática, perguntado por xremix20, 1 ano atrás

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 FdASO
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.


Anexos:

xremix20: vou testar obrigado
xremix20: Funcionou perfeitamente Obrigado mais uma vez
Perguntas interessantes