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)