我是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;
}
}
}
}