Nao estou entendendo este algoritmo em Java[Resolvido]
15 respostas
olivercld
Primeiramente Boa noite
gostaria que alguem ajudasse eu entender esse algoritmo, nao é trabalho so para praticar.
converter um valor em
minutos num formato com dias, horas e minutos.
publicclassConversao_Formato{publicstaticvoidmain(String[]args){inttempo=0,dias,horas,minutos;//Scanner digite = new Scanner(System.in);//System.out.println("Digite o tempo.: ");//tempo = digite.nextInt();System.out.println(tempo);// ler(tempo); ?dias=tempo/1440;// porque 1440 já e definido ?horas=(tempo%1440)/60;minutos=(tempo%1440)%60;System.out.println("Dias: "+dias+"\n Horas : "+horas+"\n Minutos: "+minutos);}}
minha duvida é nao estou sabendo como leio o tempo esta pedindo para ler e meus resultados estão todos dando zero saindo zero!
agradeço.
Danillo_Moreno nao entendi, caso esteja falando do Algoritmo… tenho em uma apostila.
newpaulinhu
masi antes do pubic class vc num teria que colocar o import java.utill.scanner para que possa reconheçer o scanner? D: O.o
fernandosavio
Vamos ver se é isso que tu quer saber.
Pelo algoritmo esse código recebe um valor em minutos. No caso a variável tempo:
inttempo=0;
1440 está definido porque 24 horas tem 1440 minutos. Afinal 60*24=1440.
No momento em que se calcula o código abaixo
dias=tempo/1440;
Sabemos dizer quantos dias completos se tem com o numero de minutos recebidos na variável tempo.
O código abaixo divide por sessenta (para receber a hora) os minutos ainda nao computados pelo código que calcula o dia.
horas=(tempo%1440)/60;
5)E o código abaixo pega os minutos que ainda não foram computados por DIA e por HORA e calcula os minutos que restaram.
minutos=(tempo%1440)%60;
E mais importante! ele sempre retorna zero porque ele realiza o código analizando a variavel tempo. E na linha 5 foi atribuído à variável tempo o valor zero.
Então, se você tem zero minutos você tem 0 dias, 0 horas e 0 minutos.
Espero ter ajudado…
fernandosavio
Uma coisa importante…
Tudo que está em [color=green]verde[/color] é apenas comentário do programador. Não é compilado. É só para informações ou deixar de compilar algum código que não é interessante no momento para o programador.
olivercld
newpaulinhu e como o fernandosavio nao importei o Scanner porque deixei comentado.
muito boa explicacao meu caro colega fernandosavio caso eu quero ler o tempo e como esta pedindo no exercicio esta assim comeco Ler(tempo); eu para ler, fiz Scanner digite = new Sscanner(System.in); fiz isso para ler esta certo ? e seguindo fiz isso quando compilei digitei la por exemplo numero 8 a resposta de saida : dias 0 horas = 0 e minutos = 8 foram as saidas esta correto isso e claro que tirei la o tempo iniciando com = 0. o restante da explicacao eu entendi.
obrigado.
Rafael_Mesquita_Mour
Scanner você utiliza para receber dados de entrada do usuário.
Se você digitar um valor baixo para a variável tempo, significa que terá sempre 0 dias, pelo seu cálculo 8 / 1440 = 0,00555555555555556, então para os demais cálculos será sempre utilizado o valor 0.
;D
olivercld
entao deixa ver se entendi, no exercicio pede para ler como disse ja se eu deixar o Scannser para ler do teclado a resolucao esta errada ou posso iniciar o tempo = 0 agradeco Rafael Mesquita Moura duvida ? simplificando se deixar para ler la usuario digitar o tempo esta errado dessa forma ?
Rafael_Mesquita_Mour
Não está errado, porém se o usuário digitar um valor muito baixo, pelo cálculo de x / 1440, sempre dará um valor com casas decimais.
Você pode: solicitar que o usuário entre com um valor alto, ou implementar outro algoritmo (o que eu acho ser a solução mais viável).
;D
olivercld
a sim entendido wellington.nogueira e Rafael Mesquita Mourae aos demais Membros. Entao vou tiralo de inteiro e sugerir que digite um valor maior.
Obrigado.
adriano_si
Cara, só uma dica pra ser a cerejinha do bolo…
Usa o padrão de nomenclatura do Java, ou seja CamelCase sem a necessidade do “_”
no lugar de Conversao_Formato você fará ConversaoFormato
Att.
olivercld
valeu wellington.nogueira.
Obrigado adriano_si. com sua dica eu li aqui sobre nomenclatura do java.
Rafael_Mesquita_Mour
Se a sua dúvida foi sanada, altere o seu primeiro post colocando [RESOLVIDO] na frente dele. Isso torna o fórum muito mais organizado e quando houver novas dúvidas saberemos onde procurar ;D
WellingtonRamos
Como você definiu suas variáveis como inteiras: int tempo = 0, dias, horas, minutos;
Ao realizar as operações abaixo:
dias = tempo / 1440;
horas = (tempo % 1440) / 60;O valor decimal é truncado, ou seja, desconsiderado.
Exemplo: se tempo == 720, tempo / 1440 == 0.5. Como a variável que vair armazenar esse resultado é do tipo inteiro, vai guardar apenas a parte inteira, ou seja, zero.
Arrisque utilizar valores maiores que 1440 para ver se o resultado muda.
WellingtonRamos
olivercld:
a sim entendido wellington.nogueira e Rafael Mesquita Mourae aos demais Membros. Entao vou tiralo de inteiro e sugerir que digite um valor maior.
Obrigado.
Acho que a idéia do método é que o mesmo seja inteiro mesmo hehe. Só estava explicando o porque do resultado.
A informação é que, caso tenha sido preenchido 2881 deva resultar em 2 dias, 0 horas e 1 minuto.