为了账号安全,请及时绑定邮箱和手机立即绑定

流程控制怎么就错了呢,大神帮看看呗

package demo;

class demo {	
	public static void main(String[] agrs){
		boolean[] arr = new boolean[500];
		for(int i=0; i<arr.length;i++){
			arr[i] = true;
		}
		
		int count = 0;
		int left = arr.length;
		int index = 0;
		
		while(left>1){
			if(arr[index] == true){
				count++;
				
				if(count==3){
					count = 0;
					arr[index] = false;
					left--;
				}
			
			
				index++;
					
				if(index == arr.length){
					index = 0;
				}
			}
		}
		
		
		
		for(int i=0;i<arr.length;i++){
			if(arr[i]==true){
				System.out.println(i);
			}
		}
			
		}
}	

这个是马士兵老师视频里的思考题,逢三退一.看答案是第15行的if语句应该在23行就结束了,我给写在30行了,运行就没有结果了,可是我脑袋转不过来怎么错的,借慕课求解答

正在回答

1 回答

如果放在30行,那么第15行arr[index] == false时就会陷入死循环。程序会一直运行在14和15行两步,25行到28行的内容就无法运行了。实在不明白你可以用debug看一下,方便起见500的长度可以用10来替,出错原理是一样的

0 回复 有任何疑惑可以回复我~
#1

慕函数7477710 提问者

我这么写是不是相当于把else if省略的,就错了
2017-05-06 回复 有任何疑惑可以回复我~
#2

慕函数7477710 提问者

非常感谢!
2017-05-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

流程控制怎么就错了呢,大神帮看看呗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信