Olá novamente, continuando com a série de Estrutura de Dados,
hoje vou falar sobre ordenação.
Problema: Precisa-se que ordene um array de 20 nomes em ordem alfabética.
Resolução:
Primeiro temos que criar um array de 20 posições para
resolução do problema:
String nomes[] = new String [20];
Após isso, vamos solicitar ao usuário que informe os 20 nomes.
Como já expliquei essa parte de solicitar ao usuário utilizando a classe Scanner,
não vou entrar em mais detalhes nela. (Caso você queira entender um pouco melhor,
tem no meu post sobre Conversão de minutos para horas e minutos
(https://goo.gl/nQ0QEX)
Scanner sc = new Scanner(System.in);
for(int i=0;i<nomes.length;i++){
System.out.println("Digite o nome");
nomes[i] = sc.next();
}
//Somente para mostrar, que foi salvo os nomes
for(String valores:nomes){
System.out.println(valores);
}
//Agora, independente da ordem que o usuário informou precisamos ordenar,
//e utilizaremos o algoritmo BubbleSort (ou conhecido também como:
Algoritmo Bolha)
* for (int i = 0; i < nomes.length - 1; i++)
for (int j = i + 1; j < nomes.length; j++)
if (nomes[i].compareTo(nomes[j]) > 0) {
String temporario = nomes[i];
nomes[i] = nomes[j];
nomes[j] = temporario;
}
for(String nomesOrdenados:nome){
System.out.println(nomesOrdenados);
}
* O algoritmo bolha, irá verificar de dois em dois se os elementos são maiores
ou menores entre eles, caso o primeiro elemento seja maior que o segundo
(o método compareTo irá retornar um número positivo (maior que 0(zero))).
Para a comparação entre os dois elementos, eu utilizo dois for's encadeados,
sendo que o segundo, irá iteirar + 1 com o índice do primeiro for, para que
consiga ler o próximo elemento.
nomes.lenght-1 - É para que o índice da variável j não passe do maior número
do array, e não lance uma exceção ArrayIndexOutOfBoundsException.
Assim independente da ordem que o usuário for passar os nomes, o algoritmo irá
verificar caractere por caractere e ordenando de forma alfabética.
Este código e outros estão disponíveis no meu github, caso queira analisar, basta clicar no link abaixo:
Projeto Ordenação - Bolha
Até + ;)
devhiranneri.eti.br
segunda-feira, 22 de maio de 2017
quarta-feira, 3 de maio de 2017
#1: Lógica - Conversão de minutos para hora e minutos
Olá novamente, durante esse tempo estava planejando alguns assuntos para postar aqui no meu blog que estarei estudando e transmitindo conhecimento:
A partir desse post vou falar sobre lógica de programação, resolvendo alguns problemas comuns do dia a dia do desenvolvimento. Para esta postagem vou falar sobre Conversão de minutos para horas e minutos.
O problema: (Conversão de minutos para horas e minutos)
O usuário irá digitar seja no console ou em alguma interface, o valor em minutos e o sistema deverá retornar o valor em horas e minutos.
Resolução:
Vamos pensar...
A principio teremos que criar três variáveis (horas,minutos,valorEmMinutosInformado):
Vou precisar fazer uma "cópia" do valor em valorEmMinutosInformado para a variável minutos, para que no final eu consiga informar o tempo que o usuário passou via console.
A cada 60 minutos que equivale a 1 hora, a variável horas é incrementada e a variável minutos é reduzida de 60 em 60, até o valor dela ser menor que 60, ou seja, menor que 1 hora.
Obs: Não se esqueçam dos imports para não apresentar erro de compilação.
Até mais...
A partir desse post vou falar sobre lógica de programação, resolvendo alguns problemas comuns do dia a dia do desenvolvimento. Para esta postagem vou falar sobre Conversão de minutos para horas e minutos.
O problema: (Conversão de minutos para horas e minutos)
O usuário irá digitar seja no console ou em alguma interface, o valor em minutos e o sistema deverá retornar o valor em horas e minutos.
Resolução:
Vamos pensar...
A principio teremos que criar três variáveis (horas,minutos,valorEmMinutosInformado):
int horas = 0,minutos=0,valorEmMinutosInformado=0;
//Em JAVA, existe a possibilidade da declaração
de variáveis em uma linha, caso as mesmas sejam
do mesmo tipo, int.
E uma variável do tipo boolean para controlar a futura iterações,
caso o usuário informe um valor incorreto.
boolean statusDoValor=true;
Após a criação das variáveis iremos instanciar um objeto da classe Scanner para
obtermos o valor passado pelo usuário.
Essa linha serve para avisar ao usuário que já é possível informar o valor.Scanner sc = new Scanner(System.in); //No construtor da classe Scanner, existe um parâmetro que "obriga" para quem for instanciar o objeto deverá passar uma instância de InputStream,
ou outras como: Readable, File e etc. Você pode conferir na própria
documentação em:
https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html#constructor.detail
System.out.println("Digite o valor em minutos");
A estrutura de repetição do while servirá para no caso do usuário informar qualquer valor diferente de um número válido (e.x: número por extenso), irá ser lançado uma exceção, e a execução será abortada, e para que o usuário não necessite executar o código novamente, colocamos o código dentro do try..catch (Tratador de exceções).while(statusDoValor){
try{
Essa linha abaixo irá ler o valor passado e atribuir a váriável
valorEmMinutosInformado.
valorEmMinutosInformado = sc.nextInt();
Vou precisar fazer uma "cópia" do valor em valorEmMinutosInformado para a variável minutos, para que no final eu consiga informar o tempo que o usuário passou via console.
minutos=valorEmMinutosInformado;
A cada 60 minutos que equivale a 1 hora, a variável horas é incrementada e a variável minutos é reduzida de 60 em 60, até o valor dela ser menor que 60, ou seja, menor que 1 hora.
while(minutos>=60){
horas++;
minutos-=60;
}
statusDoValor=false;
}catch(InputMismatchException e){
System.out.println("Valor informado está incorreto. Digite novamente");
valorErrado=true;
sc.next();
}
}
System.out.println(valorEmMinutosInformado+" minutos equivale a "
+horas+" horas e "+minutos+"minutos");
}
Obs: Não se esqueçam dos imports para não apresentar erro de compilação.
" import java.util.Scanner;
import java.util.InputMismatchException; "
Esse foi um de uma série de 5 posts sobre lógica de programação. Em breve vou postar o segundo. Caso você queira contribuir com esse código ou outros, tenho ele no meu github. É só clicar no link abaixo:
Projeto de Lógica de programaçãoimport java.util.InputMismatchException; "
Até mais...
Assinar:
Postagens (Atom)