Dica de programação - JAVA
Autor: Marcio Oliveira | Publicado: 2015-05-25T14:01:00-07:00

Olá, Galera!

Venho hoje trazer algumas dicas de programação em linguagem Java.

Vamos lá, nesse post vou considerar que já você já sabe o minimo de Java em outros post colocarei do inicio, vamos tratar de métodos condicionais e velocidade de processamento de alguns deles, recomendo que você não copie e cole o código mas leia e digite, assim poderá absorver melhor o que aqui será abordado.

&nbsp; Enunciado extraido do Uri Judge.

Leia um valor inteiro entre 1 e 12, inclusive. Correspondente a este valor, deve ser apresentado como resposta o mês do ano por extenso, em inglês, com a primeira letra maiúscula.

Entrada

A entrada contém um único valor inteiro.

Saída

Imprima por extenso o nome do mês correspondente ao número existente na entrada, com a primeira letra em maiúscula.

Exemplos de Entrada &nbsp; &nbsp; &nbsp; &nbsp;Exemplos de Saída
4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; April
3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;March

Link: https://www.urionlinejudge.com.br/judge/pt/problems/view/1052


Primeira Solução:

import java.util.Scanner;


public class Mes {

&nbsp;public static void main(String[] args) {
&nbsp; &nbsp;Scanner sc = new Scanner(System.in); // le entrada do teclado
&nbsp; &nbsp;
&nbsp; &nbsp;int mes;// cria o inteiro mes
&nbsp; &nbsp;
&nbsp; &nbsp;mes = sc.nextInt();// atribui a entrada de sc para mes
&nbsp; &nbsp;
&nbsp; &nbsp;switch (mes) { // recebe o mes e vai para o caso conforme a entrada
&nbsp; &nbsp;case 1:
&nbsp; &nbsp; System.out.println("January");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 2:
&nbsp; &nbsp; System.out.println("February");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 3:
&nbsp; &nbsp; System.out.println("March");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 4:
&nbsp; &nbsp; System.out.println("April");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 5:
&nbsp; &nbsp; System.out.println("May");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 6:
&nbsp; &nbsp; System.out.println("June");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 7:
&nbsp; &nbsp; System.out.println("July");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 8:
&nbsp; &nbsp; System.out.println("August");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 9:
&nbsp; &nbsp; System.out.println("September");
&nbsp; &nbsp; break; &nbsp;
&nbsp; &nbsp;case 10:
&nbsp; &nbsp; System.out.println("October");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 11:
&nbsp; &nbsp; System.out.println("November");
&nbsp; &nbsp; break;
&nbsp; &nbsp;case 12:
&nbsp; &nbsp; System.out.println("December");
&nbsp; &nbsp; break;&nbsp;
&nbsp; &nbsp;default:
&nbsp; &nbsp; break;
&nbsp; &nbsp;}
&nbsp;}
}

Segunda Solução:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Mes2_0 {
// adicione o throws NumberFormatException para tratar as exceções
&nbsp;public static void main(String[] args) throws &nbsp;NumberFormatException, IOException {

&nbsp; String Month[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; // vetor onde iremos buscar os dados
&nbsp;&nbsp;
&nbsp; BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));// leitura pelo teclado, mais rapido que o Scanner

&nbsp; int mes = Integer.parseInt(buffer.readLine()); // Atribui o valor da linha para o inteiro mes, já fazendo a conversão
&nbsp;&nbsp;
&nbsp; System.out.println(Month[mes-1]); // mostra na tela o resultado do vetor mes -1, pois o vetor inicia sempre em 0
&nbsp;&nbsp;
&nbsp;}
}


Vale Lembrar que nem sempre tamanho de cogido significa maior ou menor tempo de processamento.

No caso acima a segunda solução é mais rápida que a primeira.

Quero abordar aqui também um substituto, para maior parte dos casos, do if/else os popularmente chamados de operadores ternários. O código fica mais bonito e mais eficiente do que o if/else.
Segue abaixo.

IF/ELSE:

If( x == 0){ // se x = 0 faça
&nbsp; &nbsp; &nbsp; &nbsp;x+= 2; // x = x+2
} else{ // caso contrario faça
&nbsp; &nbsp; x -= 1; // x = x - 1
}// fim

Operadores :

x = (x==0)? +2 : -1; // se x = 0 faça x+2 senão faça x-1

Bom galera, por hoje é isso, logo mais postarei novas dicas e videos para facilitar...

Valeu e Até a próxima.