DEZENA - Descobrindo se o Primeiro e Segundo digito da dezena é Par ou Impar

Tentei fazer de um modo mais pratico…usando (cast) para conversões e algumas formulas simples, Mas dava erros em algumas dezenas…
O exercio só pedia o Primeiro digito, mas implementei…para descobrir o Segundo

Exercicio - Entrar com um número e informar se o dígito da dezena é par ou ímpar…

public static void main(String args[]) 
   
   {
	 int i;
     double pN;
	 
	 Scanner sc = new Scanner(System.in);
	 
	 System.out.print("\nDigite a Dezena: ");
	  String dez;
       dez = sc.next();
	   
	 i = Integer.parseInt(dez);
      pN = (i / 10);
       
     if(((int)pN % 2) == 0)
      System.out.println("\nO Primeiro digito da Dezena e Par");  	  
       else
         System.out.println("\nO Primeiro digito da Dezena e Impar");	   
  
	 char c = dez.charAt(1);
	  String sN = Character.toString(c);
	   i = Integer.parseInt(sN);
	 
	 if((i % 2) == 0)
	  System.out.println("\nO Segundo digito da Dezena e Par");
       else
         System.out.println("\nO Segundo digito da Dezena e Impar");	   
	  	
	}

Consegui fazer desse modo…deu tudo certo… Avaliem …valeu…

[quote=wellington.nogueira]Uma forma de “abreviar” seria trabalhar diretamente com os caracteres da string.
Veja o tamanho da string, se for 1, já sabe que a dezena é zero e precisa verificar apenas charAt(0). Se for 2, pegue o charAt(0) e o charAt(1) mas não há necessidade e conversão pois char é um número inteiro.
No caso, zero equivale a 48 e 9 equivale a 57. Então poderia fazer como este exemplo:

//Apenas exemplificando... char char1 = dez.charAt(0); if(char1 % 2 == 0) { //é par } else { //é impar }

Outra coisa é que, como você fez a conversão da string (dez) para um inteiro (i), para saber se a unidade é par ou impar, bastaria verificar i sem extrair a unidade isoladamente.
Sem contar que se o usuário digita-se apenas a unidade, ocorreria uma exceção por tentar obter charAt(1)

Isso é verdade mesmo aconteceria exceção se fosse digitado…uma Unidade… Mas o exercicio pedia uma DEZENA…

//o código acima seria mantido igual.
/*  Esta parte seria desnecessária
     char c = dez.charAt(1);  
      String sN = Character.toString(c);  
       i = Integer.parseInt(sN);  
*/    
     if((i % 2) == 0)  
      System.out.println("\nO Segundo digito da Dezena e Par");  
       else  
         System.out.println("\nO Segundo digito da Dezena e Impar");      

Mas o que descrevo são apenas alternativas de codificação. O teu código funciona e acho que isso já é suficiente ;)[/quote]

Poderia mesmo ter achado uma alternativa mais pratica de resolver a questão do Segundo digito…Mas enfim…
OBRIGADO…pela sua opnião …e visão sobre o exercicio…

Uma forma de “abreviar” seria trabalhar diretamente com os caracteres da string.
Veja o tamanho da string, se for 1, já sabe que a dezena é zero e precisa verificar apenas charAt(0). Se for 2, pegue o charAt(0) e o charAt(1) mas não há necessidade e conversão pois char é um número inteiro.
No caso, zero equivale a 48 e 9 equivale a 57. Então poderia fazer como este exemplo:

//Apenas exemplificando... char char1 = dez.charAt(0); if(char1 % 2 == 0) { //é par } else { //é impar }

Outra coisa é que, como você fez a conversão da string (dez) para um inteiro (i), para saber se a unidade é par ou impar, bastaria verificar i sem extrair a unidade isoladamente.
Sem contar que se o usuário digita-se apenas a unidade, ocorreria uma exceção por tentar obter charAt(1)

//o código acima seria mantido igual.
/*  Esta parte seria desnecessária
     char c = dez.charAt(1);  
      String sN = Character.toString(c);  
       i = Integer.parseInt(sN);  
*/    
     if((i % 2) == 0)  
      System.out.println("\nO Segundo digito da Dezena e Par");  
       else  
         System.out.println("\nO Segundo digito da Dezena e Impar");      

Mas o que descrevo são apenas alternativas de codificação. O teu código funciona e acho que isso já é suficiente :wink: