题目大概是1-100取第七个数 7 14 21....98,
然后从99开始继续取第七个:5 ,12 19...
我能想到的方法是定义一个长度为7的数组,
然后把这100个数依次放进去取下标为6的数,累计到50跳出.
但是纠结了很久不会用程序实现,求人指点!
Ps:新手刚学到java基础的数组.
int[] array=new int[102];//需遍历的数组,初始为0,
int j=1;//遍历时计数用
int k=7;//取第几个数,这里为7
int count=0;//统计输出个数
for (int i = 1; i < array.length; i++) {
if(i==array.length-1){//超过100,置1,类似循环数组
i=1;
}
if(array[i]==0){//未遍历到的值,计数加1
if(j==k){//第k个数
array[i]=1;//置为非0值,这里为1
j=1;//计数归1
count++;
System.out.println(i);
}
else
j++;
}
if(count==50)
break;
}
int j=0;
//循环50次
for(int i=0;i<50;i++){
//小于100就叠加7
if((j+7)<=100){
j+=7;
}else{
//大于100,就减掉100,剩下的作为起始值进入下一次循环
int num=j+7-100;
j=num;
}
System.out.println(j);
}
//直接加7模100即可
int count=0;
for(int i=0;i<50;i++)
{
count=(count+7)%100;
System.out.println(count);
}
遍历初始化为0的数组,遇0加1,加到7时输出数组下标并将数组此项置为非0值。
int[] array=new int[102];//需遍历的数组,初始为0,
int j=1;//遍历时计数用
int k=7;//取第几个数,这里为7
int count=0;//统计输出个数
for (int i = 1; i < array.length; i++) {
if(j==k){//第k个数
array[i]=1;//置为非0值,这里为1
j=1;//计数归1
count++;
System.out.println(i);
}
if(array[i]==0){//未遍历到的值,计数加1
j++;
}
if(i==array.length-1){//超过100,置1,类似循环数组
i=1;
}
if(count==50)
break;
}
提供一个比较麻烦的:
[code="java"]
public static void main(String[] args) {
List l = new ArrayList();
int k = 0, n = 0;
while (k < 50) {
if (n < 7) {
n++;
continue;
}
if (n == 7 && k == 0) {
l.add(n);
k++;
} else {
n += 7;
l.add(n);
k++;
}
}
}
[/code]
//需要写个类,设置常量list = 需要遍历的数组,size 是需要提取的总数。
private List get7OfList(List list, int size) {
List<Integer> copyList = new ArrayList<Integer>();
copyList.addAll(list);
int j = 0;
for (int i = 1; i < list.size(); i++) {
if (i % 7 == 0 && result.size() < size) {
result.add(list.get(i - 1));
copyList.remove(i - 1 - j);
++j;
} else if (result.size() > size) {
break;
} else {
continue;
}
}
list.removeAll(list);
list.addAll(copyList.subList(copyList.size() - 2, copyList.size()));
list.addAll(copyList.subList(0, copyList.size() - 3));
if (result.size() < 50) {
get7OfList(list, size);
}
return result;
}