DEV Community

Beatriz Maciel
Beatriz Maciel

Posted on • Edited on

HackerRank #11 | DataTypes | 🇧🇷

Este problema pede para que você encaixe um número de input nas categorias byte, short, int e long.

O problema começa com o seguinte código:

class Solution{ public static void main(String []argh) { Scanner sc = new Scanner(System.in); int t=sc.nextInt(); for(int i=0;i<t;i++) { try { long x=sc.nextLong(); System.out.println(x+" can be fitted in:"); if (x >= -128 && x <= 127) System.out.println("* byte"); //... your code here } catch(Exception e) { System.out.println(sc.next()+" can't be fitted anywhere."); } } } } 
Enter fullscreen mode Exit fullscreen mode

Já vimos que o catch serve para pegar exceções. Nesse caso, ele retorna uma exceção de que o número não se encaixa em nenhuma categoria listada acima!

Tabela de tipos primitivos

Como o número máximo e mínimo desses tipos primitivos podem ser bem grandes (ver imagem acima), a solução que encontrei foi usando enums com .MIN_VALUE e .MAX_VALUE

O resultado final é esse aqui, dentro da main:

 Scanner sc = new Scanner(System.in); int t=sc.nextInt(); for(int i=0;i<t;i++) { try { long x=sc.nextLong(); System.out.println(x+" can be fitted in:"); if (x >= -128 && x <= 127) System.out.println("* byte"); if (x >= Short.MIN_VALUE && x <= Short.MAX_VALUE) System.out.println("* short"); if (x >= Integer.MIN_VALUE && x <= Integer.MAX_VALUE) System.out.println("* int"); if (x >= Long.MIN_VALUE && x <= Long.MAX_VALUE) System.out.println("* long"); } catch(Exception e) { System.out.println(sc.next()+" can't be fitted anywhere."); } } 
Enter fullscreen mode Exit fullscreen mode

=========

Referências:

============

Essa publicação faz parte de uma série de exercícios resolvidos em Java no HackerRank. Acesse a série completa:

Top comments (0)