Tentei alguns várias vezes e não consegui resolve a problemas
Java - como programar - Exercícios 6.8 Pagina 185
esse exercícios é taxa do estacionamento, um estacionamento cobra por 2hs de R$2,00, em cima da 3hs e paga cada 50 centavo por uma hora. se estacionar mais de 24hs e paga R$10,00
publicclassCalculateCharges{publicstaticvoidmain(String[]args){doubletotal;NumberFormattotalFormat=NumberFormat.getCurrencyInstance();Calendardata=Calendar.getInstance();intdate=Integer.parseInt(JOptionPane.showInputDialog("Insere a hora fechar o estacionamento?"));data.set(Calendar.HOUR,date);inthoras=data.get(Calendar.HOUR);if(horas>=24){total=10.00;}elseif(horas>3){intexhoras=horas-3;doublesoma=exhoras*0.5;total=soma+2.00;}else{total=2.00;}JOptionPane.showMessageDialog(null," O valor a pagar: "+totalFormat.format(total));}}
Jason, seu problema é tirar a diferença entre duas horas, não?
Infelizmente eu não tenho aqui o livro para saber exatamente o enunciado. O que ele exatamente pede?
a) Para você entrar já com a diferença calculada , ou
b) Para você entrar com o horário previsto para sua saída - por exemplo, agora são 14h e você pretende sair às 18, portanto a diferença é de 4 horas
c) Para você entrar com o horário em que você entrou, e o horário de saída é o de agora.
d) Para você entrar com o horário de entrada e o de saída.
V
v0x
Dexa me ver se entendi: 2hrs de estacionamento = R$2,00. Cada hora ou fração de hora acima disso, acresce R$0,50. Se ficar 24hrs ou mais o total é R$10,00 ou paga mais uma taxa de R$10,00, fora o cálculo de 2+0.50*fração ???
Seu texto não está claro amigo… Copia do jeito que está na apostila (Ctrl+C / Ctrl+V) que a gente pode entender e te dar a resposta.
Aliás vc tá com problema no código em si (tah dando algum erro) ou o problema é com a questão???
jsnpereira
v0x:
jsnpereira:
esse exercícios é taxa do estacionamento, um estacionamento cobra por 2hs de R$2,00, em cima da 3hs e paga cada 50 centavo por uma hora. se estacionar mais de 24hs e paga R$10,00
Dexa me ver se entendi: 2hrs de estacionamento = R$2,00. Cada hora ou fração de hora acima disso, acresce R$0,50. Se ficar 24hrs ou mais o total é R$10,00 ou paga mais uma taxa de R$10,00, fora o cálculo de 2+0.50*fração ???
Seu texto não está claro amigo… Copia do jeito que está na apostila (Ctrl+C / Ctrl+V) que a gente pode entender e te dar a resposta.
Aliás vc tá com problema no código em si (tah dando algum erro) ou o problema é com a questão???
aqui o livro diz
(taxa de estacionamento) Um estacionamento cobra uma taxa mínima de R$2,00 para estacionar por até três horas. Um adicional de R$0,50 por hora não necessariamento inteira é cobrado após as três primeiras horas. A carga máxima para qualquer dado período de 24 horas é R$ 10,00. Assuma que nenhum carro fica estacionado por mais de 24 horas por vez. Escreva um aplicativo que calcule e exiba as taxas de estacionamento de cada cliente que estacionou nessa garagem ontem. você deve inserir as horas de estacionamento para cada cliente. o programa deve exibir a cobrança para o cliente atual e calcular e exibir o total dos recibos de ontem. ele deve utilizar o método CalculateCharges oara determinar a carga para cada cliente.
esse é pergunta do exercício do livro.
Obrigado!!
jsnpereira
bezier curve:
Jason, seu problema é tirar a diferença entre duas horas, não?
Infelizmente eu não tenho aqui o livro para saber exatamente o enunciado. O que ele exatamente pede?
a) Para você entrar já com a diferença calculada , ou
b) Para você entrar com o horário previsto para sua saída - por exemplo, agora são 14h e você pretende sair às 18, portanto a diferença é de 4 horas
c) Para você entrar com o horário em que você entrou, e o horário de saída é o de agora.
d) Para você entrar com o horário de entrada e o de saída.
olha o exercício que mandei outra pessoa… valeu!
B
bezier_curve
Pelo visto, é a alternativa d), não?
Vou só dar uma dica. Fazer contas com datas no Java, como você deve ter visto no livro, é um pouco “cabuloso”. Acho que nesse ponto do seu livro (como já disse, não tenho o livro para dizer se é isso ou não), bastaria você entrar com a diferença calculada, para ficar fácil de testar a sua lógica (que é o que importa, afinal de contas). Mas se você realmente quiser fazer a diferença entre dois horários, você pode aproveitar o método abaixo, que subtrai dois objetos java.util.Calendar e retorna o resultado em horas cheias.
/** * Este método calcula a diferença entre dois objetos Calendar, e retorna a diferença em horas cheias. * @param cal1 O primeiro horário (o mais antigo) * @param cal2 O segundo horário (o mais recente) * @return cal2 - cal1, em horas. */publicstaticintdiferencaCalendar(Calendarcal1,Calendarcal2){longt1=cal1.getTime().getTime();longt2=cal2.getTime().getTime();return(int)((t2-t1)/3600/1000);}
V
v0x
Primeiro: “você deve inserir as horas de estacionamento para cada cliente” então vc vai fzr isso manualmente, tanto com o dia/hora de entrada, quanto com o dia/hora de saída. Ou seja, o programa pede a você que digite o dia/hora de entrada e de saída e usando a função do amigo bezier curve ele calcula as horas que o cliente ficou no estacionamento.
Segundo: “o programa deve exibir a cobrança para o cliente atual e calcular e exibir o total dos recibos de ontem” cria um vetor com 31 posições (1 pra cada dia do mês). Depois a cada novo dia/hora que vc adicionar o programa tem que adicionar aquele valor no dia correspondente (adicionar somando “+=”, cuidado pra não substituir “=”) e exibir esse valor e depois exibir o valor total do dia anterior
Terceiro: “ele deve utilizar o método CalculateCharges para determinar a carga para cada cliente” então vc cria uma classe com qualquer nome, cria esse método CalculateCharges que vai receber dia/hora de entrada e de saída e vai fazer todo o cálculo que ele pediu e depois cria outra classe pra testar o método.
jsnpereira
bezier curve:
Pelo visto, é a alternativa d), não?
Vou só dar uma dica. Fazer contas com datas no Java, como você deve ter visto no livro, é um pouco "cabuloso". Acho que nesse ponto do seu livro (como já disse, não tenho o livro para dizer se é isso ou não), bastaria você entrar com a diferença calculada, para ficar fácil de testar a sua lógica (que é o que importa, afinal de contas). Mas se você realmente quiser fazer a diferença entre dois horários, você pode aproveitar o método abaixo, que subtrai dois objetos java.util.Calendar e retorna o resultado em horas cheias.
/** * Este método calcula a diferença entre dois objetos Calendar, e retorna a diferença em horas cheias. * @param cal1 O primeiro horário (o mais antigo) * @param cal2 O segundo horário (o mais recente) * @return cal2 - cal1, em horas. */publicstaticintdiferencaCalendar(Calendarcal1,Calendarcal2){longt1=cal1.getTime().getTime();longt2=cal2.getTime().getTime();return(int)((t2-t1)/3600/1000);}
só uma pergunta qual é a função (int) ((t2 - t1) / 3600 / 1000) ? só para saber e conhecer essa função..
V
v0x
tem um problema nisso tudo… a função diferencaCalendar retorna a diferença cheia (int) das horas de entrada e saída. Mas se o cidadão ficar 3.5 horas ele vai pagar 2 reais pelas 3hrs + 50 centavos pela meia hora, mas nesse caso a função iria retornar apenas 3 então o cálculo seria feito errado
Essa função tem que ser double e retornar exatamente a diferença entre os dois horários sem arredondar nada!
jsnpereira
bezier curve:
Pelo visto, é a alternativa d), não?
Vou só dar uma dica. Fazer contas com datas no Java, como você deve ter visto no livro, é um pouco "cabuloso". Acho que nesse ponto do seu livro (como já disse, não tenho o livro para dizer se é isso ou não), bastaria você entrar com a diferença calculada, para ficar fácil de testar a sua lógica (que é o que importa, afinal de contas). Mas se você realmente quiser fazer a diferença entre dois horários, você pode aproveitar o método abaixo, que subtrai dois objetos java.util.Calendar e retorna o resultado em horas cheias.
/** * Este método calcula a diferença entre dois objetos Calendar, e retorna a diferença em horas cheias. * @param cal1 O primeiro horário (o mais antigo) * @param cal2 O segundo horário (o mais recente) * @return cal2 - cal1, em horas. */publicstaticintdiferencaCalendar(Calendarcal1,Calendarcal2){longt1=cal1.getTime().getTime();longt2=cal2.getTime().getTime();return(int)((t2-t1)/3600/1000);}
Eu estava tentando a programar e não conseguir converter por exemplo atribuito é Int ou String converte para Calendar, veja em cima o atribuito fica Calendar, mas problemas Scanner e JOptionPane somente String, int e double. alguéns sabe possivelmente a converter?
Aguardo ao retorno...
V
v0x
jsnpereira:
Eu estava tentando a programar e não conseguir converter por exemplo atribuito é Int ou String converte para Calendar, veja em cima o atribuito fica Calendar, mas problemas Scanner e JOptionPane somente String, int e double. alguéns sabe possivelmente a converter?
Aguardo ao retorno…
Véi tu escreve em russo e usa o google tradutor eh?? Dá pra entender nada q tu fala…
jsnpereira
v0x:
jsnpereira:
Eu estava tentando a programar e não conseguir converter por exemplo atribuito é Int ou String converte para Calendar, veja em cima o atribuito fica Calendar, mas problemas Scanner e JOptionPane somente String, int e double. alguéns sabe possivelmente a converter?
Aguardo ao retorno…
Véi tu escreve em russo e usa o google tradutor eh?? Dá pra entender nada q tu fala…
Desculpa! Foi mal, pois sou surdo, às vezes erra de português por quanto digita rápido sem corrigir antes de enviar.
Então Gostaria de saber como converter String para Calendar/Horas. Por exemplo, String horaEntrada recebe o valor 18:00, e converte para Calendar/hora ?cal1? enviar para o método diferencaCalendar mesmo o método que Biezer Curve mostrou. Já tentei em várias vezes e não consegui, ainda aparecendo à identificação erro.
Espero que você entende… obrigado!!
V
v0x
jsnpereira:
Desculpa! Foi mal, pois sou surdo, às vezes erra de português por quanto digita rápido sem corrigir antes de enviar.
Então Gostaria de saber como converter String para Calendar/Horas. Por exemplo, String horaEntrada recebe o valor 18:00, e converte para Calendar/hora ?cal1? enviar para o método diferencaCalendar mesmo o método que Biezer Curve mostrou. Já tentei em várias vezes e não consegui, ainda aparecendo à identificação erro.
Espero que você entende… obrigado!!
Cara tô super mal pela minha ignorância… mil desculpas por favor :oops:
Bem, eu não sabia responder sua pergunta, mas procurei sobre o assunto como forma de pedido de desculpas. Consegui a resposta! O método recebe como parâmetro uma string do tipo HH:mm (ex: 18:00) converte ela em formato Calendar e retorna o Calendar pra vc usar lá naquele outro método diferencaCalendar…
Segue o método:
public Calendar converterHora(String str) throws ParseException {
Calendar cal=Calendar.getInstance();
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("HH:mm");
date = (Date)formatter.parse(str);
cal.setTime(date);
return cal;
}PS: Na classe que vc inserir esse método vai precisar de:
import java.text.*;
import java.util.*;Testei aqui e rodou perfeitinho!!!
jsnpereira
v0x:
Cara tô super mal pela minha ignorância… mil desculpas por favor :oops:
Bem, eu não sabia responder sua pergunta, mas procurei sobre o assunto como forma de pedido de desculpas. Consegui a resposta! O método recebe como parâmetro uma string do tipo HH:mm (ex: 18:00) converte ela em formato Calendar e retorna o Calendar pra vc usar lá naquele outro método diferencaCalendar…
Segue o método:
public Calendar converterHora(String str) throws ParseException {
Calendar cal=Calendar.getInstance();
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("HH:mm");
date = (Date)formatter.parse(str);
cal.setTime(date);
return cal;
}PS: Na classe que vc inserir esse método vai precisar de:
import java.text.*;
import java.util.*;Testei aqui e rodou perfeitinho!!!
Ah! sem problemas… que acontece…
vou testar esse programa amanhã, hoje deve muita coisa de fazer… Mais uma vez obrigado!!