Ler Horas java

Gente uma ajudinha por favor.
queria que o usario digitasse a hora de entrada e fosse impresso na tela

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println("Entre com a  hora de Inicio");
Date horaInicio = simpleDateFormat.parse(Entrada.nextLine());
System.out.println("A hora de Entrada: "  + horaInicio);

porem da erro
sou nova e um exercicio que tenho que fazer

1 curtida

que erro tá dando?

Olhando rápido aqui, o código tá errado, vc declara sdf e usa simpleDateFormat:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println("Entre com a hora de Inicio");
Date horaInicio = sdf.parse(Entrada.nextLine());
System.out.println("A hora de Entrada: " + horaInicio);

É isso?

2 curtidas

Como já dito, um erro está aqui, vc tenta usar a variável simpleDateFormat, que não existe (o que vc criou é sdf).

Outro ponto é que o método parse lança uma exceção, e vc deve capturá-la:

try {
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    System.out.println("Entre com a hora de Inicio");
    Date horaInicio = sdf.parse(Entrada.nextLine());
    System.out.println("A hora de Entrada: " + horaInicio);
} catch (ParseException ex) {
    ex.printStackTrace();
}

Ou faça com que o main lance a exceção (como é um exercício, não importa muito, mas em aplicações sérias tem que analisar o que fazer com a exceção, mas já estou desviando do assunto):

public static void main(String[] args) throws ParseException {
    Scanner Entrada = new Scanner(System.in);
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    System.out.println("Entre com a hora de Inicio");
    Date horaInicio = sdf.parse(Entrada.nextLine());
    System.out.println("A hora de Entrada: " + horaInicio);
}

Não use API’s obsoletas

Desde o Java 8 (lançado em 2014, quase 10 anos atrás) existe a API java.time, que veio para corrigir uma série de problemas existentes em Date e SimpleDateFormat.

No caso, ficaria assim:

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class Teste {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        System.out.println("Entre com a hora de Inicio");
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
        LocalTime horaInicio = LocalTime.parse(entrada.nextLine(), dtf);
        System.out.println("A hora de Entrada: " + horaInicio);
    }
}

Apesar de parecer a mesma coisa, a diferença fundamental está por debaixo dos panos. Date e SimpleDateFormat possuem uma longa lista de problemas e falhas de design que foram corrigidas na nova API, e a maior parte são detalhes de implementação que vc não vê. De qualquer forma, é interessante aprender a nova API (que nem é mais tão nova assim), pois ela te poupará de muita dor de cabeça (digo isso com conhecimento de causa, de alguém que apanhou muito com os problemas da API antiga).

3 curtidas

caraca vocês sao foda entendi, galera. muito obrigada a todossssss