Dúvida de como converter os valores

17 respostas
java
P

Olá. Estou com problemas na conversão dos valores para efetuar as contas:
Há um cronômetro rodando e num determinado instante o valor será atribuído como
Menor Tempo 00:10:34 e algum tempo depois este TEMPO deverá ser comparado ao valor
presente no cronômetro para constatação da diferença entre eles.

image

Estou fazendo assim, mas dá erro:

//===========================
click1 = 0;
int menortemp = Integer.parseInt(lblMenorTmp.getText());
int contatemp = Integer.parseInt(lblClock.getText()) -
                Integer.parseInt(lblMenorTmp.getText());

if (contatemp < Integer.parseInt(lblClock.getText())) {
     lblMenorTmp.setText(lblClock.getText());
}
//===========================
Exception in thread AWT-EventQueue-0 java.lang.NumberFormatException: For input string: 00:00:00at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:580)

at java.lang.Integer.parseInt(Integer.java:615)

at Novaforca.frmBase.moveFocoParaEnter(frmBase.java:3146)

at Novaforca.frmBase.btnEActionPerformed(frmBase.java:2675)

at Novaforca.frmBase.access$200(frmBase.java:39)

Alguém pode me ajudar a entender o que ta errado?

17 Respostas

D

Pega os valores e faz uma oração. Termina com

Glória a Deuxxxxxxxxxxxxxxxxx
Brincadeiras à parte, vamos lá.
A exceção está sendo apresentada pois o valor "00:00:00’ não é um número válido.
Você deve ler este valor como String e, provavelmente, converter em LocalTime

LocalTime lt = LocalTime.parse("10:15:30");

A partir daí, você começa a tratar o que quiser.

Porém, se você é um noob, iniciante, sugiro ler como String, fazer um split e converter cada parte em número:

String sMenor = lblMenorTmp.getText();.
String[] parts = sMenor.split(":");
Integer hrs = Integer.valueOf(parts[0]);

Entendeu?

P

Quase gostei do “Glória a Deus!!”, kkkkk
vou fazer aqui e ver o resultado.

P

Me perdoe darlan_machado,
não consegui fazer. Acho que vou orar pra não ter que desistir desa idéia. kkk

D

Cara, isso é extremamente genérico.
Não conseguiu pq? Algum erro?

P

Bem. 1 - Sou bem iniciante.
2 - Só achei o caminho pelo String. E split, mas assim mesmo as variaveis precisam ser convertidas e os erros me dominaram denovo.
Usei o seu exemplo para iniciar.

V

Boa noite amigo.

Não vi sentido nenhum no seu método, mas eu fiz um que funciona mesmo sem sentido…hehehehehe.

public class Teste {

    public static void main(String[] args) throws ParseException {
        Teste ft = new Teste();
        ft.verificarTempo("00:10:34", "00:30:45");
    }

    public void verificarTempo(String menorTemp, String clockTemp) {
        try {
            LocalTime mT = stringToLocalTime(menorTemp);
            LocalTime cT = stringToLocalTime(clockTemp);
            Duration contaTemp = Duration.between(mT, cT);

            if(contaTemp.toNanos() < cT.toNanoOfDay()){
                System.out.println(clockTemp);
            }
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }

    public LocalTime stringToLocalTime(String strTime){
        return LocalTime.parse(strTime, DateTimeFormatter.ofPattern("HH:mm:ss"));
    }

}

Espero que ajude. :metal::sunglasses::metal:

P

Hei Villa (kkkk) , vou ter que colocar seu nome nos créditos do meu projeto. ahahahahah.
Bem. O que eu quero é que:
Ao clicar a primeira letra, dispare o cronometro e inicie também a mesma contagem sobre o menor tempo (os dois correm juntos). No momento do próximo (terceiro) click, já se possa fazer uma operação (subtração) que mostre e registre o menor intervalo (entre os clicks).E o mesmo ocorra para o maior tempo.
Olha. O que fez, já me esclareceu bastante sobre esse tal LocalTime e aquele between ali heim. nusssssss arrrrepiiiiei. Vou tentar aqui fazer os ajustes sobre isso tudo que me mandou.

Estou estudando aqui alguma solução.

Obrigado viu. Voce é demais. Deus abençoe voces.

P

Hei Villa, infelizmente não consegui. Decidi retirar estes marcadores de tempo.

Não estou conseguindo interpretar a documentação.

Parei nisso.

public void verificarTempo() {  //String mnrtmp, String clockTemp) {
        if (click1 == 0) {
            click1++;
            click2 = 0;
            
            lblMenorTmp.setText(lblClock.getText());
            String inicioTmp = lblMenorTmp.getText();
            iT = LocalTime.parse(inicioTmp);
            
            } else {
            click1 = 0;
            click2++;
            
                String clocktmp = lblClock.getText();
                cT = LocalTime.parse(clocktmp);
                
                LocalTime tmp = iT.plusHours(cT.getHour())
                                  .plusMinutes(cT.getMinute())
                                  .plusSeconds(cT.getSecond());
            System.out.println(tmp);
        }
    }

Obrigado pela ajuda viu. Sou muito grato a você.

V

Hoje eu não prometo, mas até sábado eu posto um ou dois métodos que fazem isso.

P

thanks

P

Olá gente!.
Vou recomeçar, ja pedindo muitas desculpas por este tópico.
Eu sou mesmo iniciante em Java e acho que estendi demais o passo dessa vez. Tenho recebido muita ajuda aqui e por isso não encerrei ainda.

Bem, trata-se de um jogo da forca, e ao inserir a 1ª Letra, dispara-se um cronômetro ao inserir a 2ª Letra, faz o registro do tempo entre as duas letras e registra-se como Menor Tempo.Daí por diante caso ocorra, a cada Letra inserida um tempo menor de intervalo este será registrado como Menor Tempo.

Não sei, mesmo com boa ajuda de algumas pessoas, como fazer a conversão dos valores e fazer as operações para então registrar.

Estou mesmo pedindo ajuda nesta empreitada, pois não queria desistir desses contadores de tempo no projeto.

Obrigado.

R

Olha, já faz quanto tempo que você está nesse projeto? Creio que você já não é mais iniciante, iniciante não faz idéia do que é um Timer, String, Thread, Try Catch…

Enfim, eu não entendi qual é a sua dúvida, o que você quer fazer? Só um contador?

D

Considerando o “menino” Neymar, ele é sim.

R

marrapaz

P

O projeto foi crescendo. Jogo da velha só não tem graça, e ele permite esses incrementos.
Quanto a “não ser mais iniciante”, ops. fico lisongeado. kkkkkk Obrigado pelo “moral”, vindo de você, fico realmente enaltecido. kkkkk

O tempo não passa quando se é criança (e não tem dinheiro envolvido. kkkkk

Esta parte do contador, foi uma guerrinha aqui, na qual houve um empate de palavras, aí surgiu a questão do tempo. Mas Tudo não passa mesmo de “aprender um pouco mais”.

Abraço.

R
public void horario(String horaInicio, String horaFim) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            Date h1 = sdf.parse(String.valueOf(horaInicio));
            Date h2 = sdf.parse(String.valueOf(horaFim));

            long contador = h1.getTime();
            long recorde = h2.getTime();

            if (contador > recorde) {
                System.out.println("Parabéns, vc bateu o recorde!!");
                jTextField2.setText(jLabel6.getText());
            } else if (contador == recorde) {
                System.out.println("Poxa, você quase conseguiu vencer o último recorde... Tente novamente!");
            } else {
                System.out.println("Você não chegou nem perto de conseguir, vai tentando aí");
            }

        } catch (ParseException ex) {
            ex.printStackTrace();
        }
    }

Eu esqueci de mudar o nome das labels, jLabel6 seria o contador, jTextField2 seria o campo do recorde.

P

Prometo que vou testar, aprender e partir pra compartilhar. kkkk Obrigado por hora Abner.

Criado 6 de fevereiro de 2019
Ultima resposta 15 de fev. de 2019
Respostas 17
Participantes 4