代码如下:
import java.io.*;
import java.util.*;
public class Main {
//判断某一ID是否中过奖的方法
public static boolean hasIt(ArrayList<String> lucky,String ID){
for(String data:lucky){
if(data.equals(ID)) return true;
}
return false;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
//total 总转发量
//start 启示位置
//step 间隔(或者叫步长)
String[] info=br.readLine().split(" ");
int total=Integer.parseInt(info[0]),start=Integer.parseInt(info[1]),step=Integer.parseInt(info[2]);
//中过奖的人
ArrayList<String> lucky=new ArrayList<>();
//转发的人不够抽奖
if(total<start){
out.println("Keep going...");
}
else{
//遍历每一个ID
for(int i=1;i<=total;i++){
String ID=br.readLine();
//如果当前ID到达了起始位置,打印ID并加入动态数组
if(i==start){
out.println(ID);
lucky.add(ID);
continue;
}
//如果当前ID已经在起始位置后,并且踩在了间隔决定的抽奖位置上
if((i-start)%step==0&&i>start){
//如果动态数组里没有这个ID,打印并加入
if(!hasIt(lucky,ID)){
out.println(ID);
lucky.add(ID);
}
//如果已经抽到过了,序号和总数都自减,以此跳过这个ID,并且不会导致无读入使得循环无法结束
else{
i--;
total--;
}
}
}
}
out.flush();
}
}
测试点2 3错误 请问具体哪里有问题?