Oi gostaria de implementar em meu algoritmo algo que fizesse repeti-lo a cada 2 horas…
existe uma função especifica pra isso??
o código é esse…
import java.util.Calendar;
import java.util.Random;
import java.util.Scanner;
import java.util.GregorianCalendar;
import javax.swing.*;
public class Projeto_v1 {
/**
* Uma transportadora deseja desenvolver um programa para ser acoplado em
* sua frota de caminhões de tal forma que seja possível detectar se o motorista
* está embriagado ou extremamente cansado. A cada duas horas, o motorista
* terá de se submeter a um teste que consiste numa sequência de letras e
* números aleatórios apresentados num monitor. Esses números precisam ser
* imediatamente repetidos no teclado, dentro de um curto intervalo de tempo,
* previamente determinado. Como a atenção de uma pessoa embriagada é
* comprovadamente afetada pelo teor alcoólico ou pela falta de sono, a
* transportadora espera poder detectar quando um motorista está sem condições
* de dirigir e bloquear o caminhão.
*/
static String palavras [];
static String palavras_digitadas[];
static Scanner s = new Scanner (System.in);
public static void atribuicao(String[] a){
for(int i = 0;i<a.length;i++){
switch(i){
case 0:
a[i] = "casa";
break;
case 1:
a[i] = "cama";
break;
case 2:
a[i] = "segurança";
break;
case 3:
a[i] = "sono";
break;
case 4:
a[i] = "bebida";
break;
case 5:
a[i] = "acidente";
break;
case 6:
a[i] = "revolução";
break;
case 7:
a[i] = "João";
break;
case 8:
a[i] = "Japão";
break;
case 9:
a[i] = "chaveiro";
break;
case 10:
a[i] = "cerébro";
break;
case 11:
a[i] = "dissociar";
break;
case 12:
a[i] = "definição";
break;
case 13:
a[i] = "importância";
break;
case 14:
a[i] = "critério";
break;
case 15:
a[i] = "ascensorista";
break;
case 16:
a[i] = "excessão";
break;
case 17:
a[i] = "motorista";
break;
case 18:
a[i] = "proposição";
break;
case 19:
a[i] ="ação";
break;
}
}
}
public static void impressao(String[]a){
for(int i =0;i<a.length;i++){
System.out.println(a[i]);
}
}
public static int verificador_repeticao (int aux, int num_sorteado[]){
for(int i =0;i<num_sorteado.length;i++){
if(aux == num_sorteado[i]){
return -1;// caso o número já foi sorteado retorna -1
}
}
return 0;// caso contrário retorna 0
}
public static void digitar(int a[] , String palavra_digitada[]){
for(int i =0;i<a.length;i++){
palavra_digitada[i]=JOptionPane.showInputDialog("Digite a palavra: "+palavras[a[i]],"digite aqui");
}
}
public static int comparar(String palavras[], String palavra_digitada[], int a[]){
int acertos = 0;
for(int i =0;i<a.length;i++){
if(palavras[a[i]].equalsIgnoreCase(palavra_digitada[i])){
acertos++;
}
}
return acertos;
}
public static void calculo_tempo(int tempo_inicial[], int tempo_final[], int tempo_gasto[]){
for(int i = 2;i > 0;i--){
if(tempo_final[i]<tempo_inicial[i]){
tempo_final[i-1]--;
tempo_gasto[i] = (tempo_final[i]+60) - tempo_inicial[i];
}else{
tempo_gasto[i]= tempo_final[i]-tempo_inicial[i];
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
GregorianCalendar calendar = new GregorianCalendar();
int hora = calendar.get(calendar.HOUR_OF_DAY);
GregorianCalendar calendar1 = new GregorianCalendar();
int hora_inicial = calendar1.get(Calendar.HOUR_OF_DAY);
int min_inicial = calendar1.get(Calendar.MINUTE);
int seg_inicial = calendar1.get(Calendar.SECOND);
int tempo_inicial[ ]= new int [3];
// colocação do tempo inicial no vetor tempo_inicial
tempo_inicial [0]= hora_inicial;
tempo_inicial [1]= min_inicial;
tempo_inicial [2]= seg_inicial;
palavras = new String[20];
atribuicao(palavras);
Random random = new Random();
int num_palavras_digitadas = 5;//quantidade de palavras que a pessoa terá que digitar
palavras_digitadas = new String [num_palavras_digitadas];
int num_sorteado[] = new int [num_palavras_digitadas];
for(int i =0;i<num_palavras_digitadas;i++){
int aux = random.nextInt(palavras.length);
// verificar se o numero já foi digitado
if(verificador_repeticao(aux, num_sorteado)!= 0){
aux = random.nextInt(palavras.length);
}
num_sorteado[i]= aux;//determina a posição do vetor da biblioteca de palavrasque serão digitadas
}
digitar(num_sorteado, palavras_digitadas);
int acertos = comparar(palavras,palavras_digitadas,num_sorteado);//quantidade de palavras que a pessoa acertou
int acertos_minimos = 3;
GregorianCalendar calendar2 = new GregorianCalendar();
int hora_final = calendar2.get(Calendar.HOUR_OF_DAY);
int min_final = calendar2.get(Calendar.MINUTE);
int seg_final = calendar2.get(Calendar.SECOND);
int tempo_final[]=new int [3];
// colocação do tempo final no vetor tempo_final
tempo_final[0]= hora_final;
tempo_final[1]= min_final;
tempo_final[2]= seg_final;
int tempo_gasto [] = new int [3];
// calculo do tempo gasto;
calculo_tempo(tempo_inicial, tempo_final, tempo_gasto);
// colocando o tempo gasto para apenas segundos
for(int i =0;i<tempo_gasto.length-1;i++){
if(tempo_gasto[i]>0){
tempo_gasto[i+1] = tempo_gasto[i+1]+tempo_gasto[i]*60;
}
}
//determinaremos o tempo permitido para digitar as palavras
int seg_permitido_por_palavra = 5;
int seg_permitido_total = seg_permitido_por_palavra*num_palavras_digitadas;
// a comparação será feita apenas pelos segundos por facitar os cálculos
if(seg_permitido_total >= tempo_gasto[2] && acertos>= acertos_minimos){
JOptionPane.showMessageDialog(null, "Você está em codições de dirigir.");
}else{
JOptionPane.showMessageDialog(null, "Você não está em codições de dirigir. \nO caminhão será bloqueado.");
}
}
}