有没有一种方法可以在TimerTask运行时检查某些内容

时间:2020-08-09 00:50:54

标签: java timertask

我是Java的新手,但是此代码应该每2分钟检查5次重复,如果经过2分钟,那么它将允许重复,我不确定如何使这项工作有效或者,即使这是合法的方式,也麻烦您了

class RepeatCheckerTask extends TimerTask{
    
    //ticks every ten seconds 
    static int counter = 0;
    //ticks every 2 minutes
    static int twoMinuteCounter = 0;

    public void run() {

    }
    public RepeatCheckerTask(List<Integer> numbers) {
            
        //it repeats every ten seconds so if i call counter every ten seconds and update it that should work
            counter += 10;
            System.out.println(counter);
            //if the counter is below 119
            if(counter < 120 && twoMinuteCounter <= 1) {
                //Check for repeating numbers
                checkerLoop:
                for(int i = 0; i < numbers.size(); i++){
                    int count = 1;
                    for(int j = i + 1; j < numbers.size(); j++) {
                        if(numbers.get(i).equals(numbers.get(j))) {
                            count++;
                            if(count == 5) {
                                Testing.noDuplicates = false;
                                System.out.println("Banned!");
                                break checkerLoop;
                            }
                        }
                    }
                }   
            }
            
            //if it reaches 120 don't check and reset counter to  0 and tick the two
            if(counter == 120) {
                counter = 0;
                twoMinuteCounter += 1;
                
            }
    }
}

*此外,如果还有其他我正在做的事情,我不应该做的事情或坏习惯,我将不胜感激有人指出它。

public class Testing{   
    
    static boolean noDuplicates = true;
    
    public static void main(String[] args) {
        
        List<Integer> numbers = new ArrayList<>();
        Scanner input = new Scanner(System.in);
        Timer timer = new Timer();
        
        System.out.println("Input 10 non-decimal numbers: ");
        
        addingLoop:
        while(input.hasNext()) {
            numbers.add(input.nextInt());
            
            while(RepeatCheckerTask.twoMinuteCounter < 1) {
            timer.scheduleAtFixedRate(new RepeatCheckerTask(numbers), 0, 10000);
            }
            
            //If number of inputs reaches 10 then stop.
            if(numbers.size() == 10) {
                System.out.println("Maximum number of inputs reached");
                System.out.println("Your inputs were1: " + numbers);
                break addingLoop;
            }
            
            //if duplicates then stop
            if(noDuplicates == false) {
                System.out.println("Stop you've got duplicates.You've violated law.");
                break addingLoop;
            }
        }
    }

}

0 个答案:

没有答案