输入1个数字和多个字符,中间均以空格隔开。假设数字取值为m(范围1~9),后面字符个数为n。假设n个字符围成一圈,从第一个字母开始循环报数,当数到m以后,第m个字母就出列,直到这n个字母全部出列。最后,按照出列的顺序输出这些字母,中间仍以空格隔开。取值范围:m为1到9, 字符个数n大于1小于20。
网上很多方法感觉好乱,很多所谓的Java都是根据c的思想完成的没有Java的灵活性。
附代码:
import java.util.*;
public class Recycle {
static Scanner scanner = new Scanner(System.in);
static int num;
static String str;
static LinkedList<String> list = new LinkedList<String>();
static LinkedList<String> result = new LinkedList<String>();
public static void main(String[] arg) {
input();
output();
}
private static void output() {
pushNum();
Iterator it = result.iterator();
while (it.hasNext()) {
System.out.print(it.next()+" ");
}
}
private static void pushNum() {
int i=1;
while(list.size()>0){
// System.out.println(i+"!! ");
Iterator it = list.iterator();
while (it.hasNext()) {
String node=(String) it.next();
if(i==num){
result.add(node);
it.remove();
i=0;
}
i++;
}
}
}
private static void input() {
str = scanner.nextLine();
String [] tmp=str.split(" ");
num=Integer.parseInt(tmp[0]);
for(int i=1;i<tmp.length;i++){
list.add(tmp[i]);
}
}
}