一道编程题,怎么运行不正确?
public class watermelon {
/**
* 有1020个西瓜,第一天卖一半多2个,以后每天卖剩下的一半多2个,
* 问几天以后能卖完
*/
public static void main(String[] args) {
int x1,x2,day;
x1=1020;
day=0;
while(x1==0){
x2=x1/2-2;
x1=x2;
day++;}
System.out.println( "the day is "+day);
// TODO Auto-generated method stub
}
}
运行出错误~但是我怎么也看不出来,望指点!!
------解决方案--------------------public static void main(String[] args) {
int total = 1020;
int totalSales = 0;
int totalLeft = 1020
int days = 0;
while(totalLeft > 0){
totalSales += totalLeft/2 + 2;
totalLeft = total - totalSales;
days++;
}
System.out.println( "the day is " + day);
// TODO Auto-generated method stub
}
}
------解决方案--------------------你卖完那天不一定是正好x1=0,所以那样是不对的,而应该统计卖出总数大于等于1020个
------解决方案--------------------将while(x1==0)
改为while(x1> =0)就行了, 原因和JAVA的除法规则有关
------解决方案--------------------while(x1==0)
这句话的意思是当x1变量的值为0的时候才执行while循环的语句
改成将while(x1> 0)
就可以了!
------解决方案--------------------public class watermelon {
/**
* 有1020个西瓜,第一天卖一半多2个,以后每天卖剩下的一半多2个,
* 问几天以后能卖完
*/
public static void main(String[] args) {
int x1,x2,day;
x1=1020;
day=0;
while(x1!=0){
x2=x1/2-2;
x1=x2;
day++;}
System.out.println( "the day is "+day);
// TODO Auto-generated method stub
}
}
答案是8天
------解决方案--------------------楼上的这样如果把x2=x1/2-2改成x2=x1/2-3,即每天买出一半多三个程序就死了呢。
while(x1> =0){
x2=x1/2-2;
x1=x2;
day++;}
------解决方案--------------------不对吧!
while(x1!=0){
x2=x1-(x1/2-2);
x1=x2;
day++;}
------解决方案--------------------x1=0的时候已经卖完了.应该是
while(x1> 0){
x2=x1-(x1/2-2);
x1=x2;
day++;}