Java程序 执行出错

题目:15个红球15个绿球排一圈,从第1个数开始数,到第13个球时,拿出此球,然后从下个球开始数,当再数到第13个球时取出此球,如此循环,直到剩下15个球。问:怎样的排列... 题目:15个红球15个绿球排一圈,从第1个数开始数,到第13个球时,拿出此球,然后从下个球开始数,当再数到第13个球时取出此球,如此循环,直到剩下15个球。问:怎样的排列能实现取出的全是红球。

public class TestUp {

public static void main(String[] args) {
boolean []arr = new boolean[30];
for(int i=0;i<arr.length;i++){
arr[i] = true;
}
int leftCount = arr.length;
int countNum = 0;
int index = 0;
while(leftCount>15){
if(arr[index]==true){
countNum++;

if(countNum==13){
countNum = 0;
arr[countNum] = false;
System.out.print(index+" ");
leftCount--;
}
}
index++;
if(index==30){
index = 0;
}
}
}
}
展开
 我来答
demol0326
2012-04-29 · TA获得超过1021个赞
知道小有建树答主
回答量:132
采纳率:0%
帮助的人:173万
展开全部
你的程序:错的地方我加了注释并且改过来了:
public class TestUp {

public static void main(String[] args) {
boolean[] arr = new boolean[30];
for (int i = 0; i < arr.length; i++) {
arr[i] = true;
}
int leftCount = arr.length;
int countNum = 0;
int index = 0;
while (leftCount > 15) {
if (arr[index] == true) {
countNum++;

if (countNum == 13) {
countNum = 0;
arr[index] = false; // 应该是将arr[index] = false 而不是
// arr[countNum] = false;
System.out.print(index+1+ " "); // index是从0开始的,而我们实际中是从1开始数,所以要加1
leftCount--;
}
}
index++;
if (index == 30) {
index = 0;
}
}
}

====================结果:
13 26 9 23 7 22 8 25 12 30 18 6 29 20 15

另外附赠一个链表写的程序:

public class QueuePlay {

Ball head = new Ball(-1);
Ball watcher = null;

public void display(int num) {
for (int i = 1; i <= num; i++) {
if (head.right == null) {
watcher = new Ball(-1);
watcher = head;
Ball d = new Ball(i);
watcher.right = d;
d.left = head;
watcher.left = null;
watcher = d;
} else {
Ball d = new Ball(i);
watcher.right = d;
d.left = watcher;
watcher = d;
}
}
watcher.right = head.right;
head.right.left = watcher;
watcher = head.right;

int index = 1;
int kicked = 0;
while (watcher != null && kicked < 15) {

Ball tmp;
if (index % 13 != 0) {
watcher = watcher.right;
} else {
watcher.say();
tmp = watcher;
watcher = watcher.right;

tmp.right.left = tmp.left;
tmp.left.right = tmp.right;
kicked++;
}

index++;
}

}

public static void main(String[] args) {
new QueuePlay().display(30);
}

class Ball {
int id = -1;
Ball left = null;
Ball right = null;

public Ball(int id) {
this.id = id;
}

public void say() {
System.out.println("在位置:"+id+" 放一个红球球");
}

}

}

=========================结果
在位置:13 放一个红球球
在位置:26 放一个红球球
在位置:9 放一个红球球
在位置:23 放一个红球球
在位置:7 放一个红球球
在位置:22 放一个红球球
在位置:8 放一个红球球
在位置:25 放一个红球球
在位置:12 放一个红球球
在位置:30 放一个红球球
在位置:18 放一个红球球
在位置:6 放一个红球球
在位置:29 放一个红球球
在位置:20 放一个红球球
在位置:15 放一个红球球
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式