Dúvida de como converter os valores

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:00”
at 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?

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?

1 curtida

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

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

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

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.

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:

1 curtida

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.

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ê.

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

thanks

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.

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?

Considerando o “menino” Neymar, ele é sim.

marrapaz

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.

1 curtida
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.

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

1 curtida