Este problema pede para que seja calculada a área de um paralelograma com largura B e altura H. Caso B <= 0 e H <=0, o console deve retornar a mensagem "java.lang.Expection: Breadth and height must be positive".
Static
Além disso, é importante que seja usado um bloco Static
de inicialização. A vantagem do private static methods
é a reutilização se for necessário reinicializar a classe variável.
A sintaxe de uma inicialização static é:
public class staticTest { static String s; static int n; static double b; static { s = "Eu sou estático"; n = 500; d = 4000.0001; } }
O código oferecido no problema é o seguinte:
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { //... espaço para escrever o código public static void main(String[] args){ if(flag){ int area=B*H; System.out.print(area); } }//end of main }//end of class
Try / Catch
Para resolver o problema, é importante usar tanto o bloco static
quanto o try / catch
. Toda vez que temos uma CheckedException
, podemos usar o try / catch
para desviar os erros, mantendo o funcionamento dos comandos.
A sintaxe do Try / Catch é:
try { } catch (Exception ex) { }
Às vezes precisamos usar um throw new Exception("mensagem")
, para especificar qual exceção queremos passar e facilitar a correção de bugs futuros.
Dessa forma, a resolução do problema se dá nos seguintes passos:
- Dentro da classe Solution, passar variáveis que sejam
static
. - Criar um
Scanner
para fazer input dos números. - Validar, através de um
boolean
, o flag que já estava especificado na main do problema. - Passar as variáveis B e H para calcular a o paralelograma.
- Abrir o bloco
static{}
- Introduzir o bloco
try / catch
, especificando que se(if)
a flag sejafalse
, é necessário aplicar othrow new Exception()
e imprimir a exceção que foi pedida.
Sendo assim, a solução final, dentro da classe Solution, fica:
static Scanner sc = new Scanner(System.in); static boolean flag = true; static int B = sc.nextInt(); static int H = sc.nextInt(); static { try{ if(B <= 0 || H <= 0){ flag = false; throw new Exception("Breadth and height must be positive"); } } catch (java.lang.Exception ex){ System.out.println(ex); }
==========
Referências
Static
Documentação oficial:
Exemplo de sintaxe:
Try / Catch
Exceções e sintaxe
============
Essa publicação faz parte de uma série de exercÃcios resolvidos em Java no HackerRank. Acesse a série completa:
- HackerRank #6 | Scanner e End-of-file
- HackerRank #7 | Int to String / String to Int
- HackerRank #8 | Date and Time
- HackerRank #9 | Static Initializer Block
- HackerRank #10 | Currency Formatter
- HackerRank #11 | DataTypes
- HackerRank #12 | Strings Introduction
- HackerRank #13 | Substring Comparisons
- HackerRank #14 | Abstract Class
- HackerRank #18 | BigInteger
- HackerRank #19 | Loops II
- HackerRank #20 | String Reverse
- HackerRank #23 | Instanceof keyword
- HackerRank #26 | Generics
- HackerRank #27 | 1D Array
- HackerRank #28 | Anagrams
- HackerRank #33 | Arraylist
- HackerRank #34 | Exception Handling Try / Catch
- HackerRank #36 | Exception Handling
- HackerRank #37 | List
- HackerRank #38 | SubArray
- HackerRank #39 | HashSet
- HackerRank #40 | Java Dequeue
Top comments (0)