一道编程题,怎么运行不正确?

shuye100 2007-07-01 03:19:56
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

}

}


运行出错误~但是我怎么也看不出来,望指点!!
...全文
368 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
caojinrong 2007-07-05
  • 打赏
  • 举报
回复
x1=0的时候已经卖完了.应该是

while(x1>0){
x2=x1-(x1/2-2);
x1=x2;
day++;}
sutdy 2007-07-04
  • 打赏
  • 举报
回复
不对吧!
while(x1!=0){
x2=x1-(x1/2-2);
x1=x2;
day++;}
shuye100 2007-07-03
  • 打赏
  • 举报
回复
谢谢啦:)
Allblus 2007-07-03
  • 打赏
  • 举报
回复
楼上的这样如果把x2=x1/2-2改成x2=x1/2-3,即每天买出一半多三个程序就死了呢。

while(x1>=0){
x2=x1/2-2;
x1=x2;
day++;}
weiqiwei 2007-07-03
  • 打赏
  • 举报
回复
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天
d289522401 2007-07-01
  • 打赏
  • 举报
回复
while(x1==0)

这句话的意思是当x1变量的值为0的时候才执行while循环的语句

改成将while(x1>0)
就可以了!
xiaoxiao130130 2007-07-01
  • 打赏
  • 举报
回复
将while(x1==0)
改为while(x1>=0)就行了, 原因和JAVA的除法规则有关
csn571 2007-07-01
  • 打赏
  • 举报
回复
你卖完那天不一定是正好x1=0,所以那样是不对的,而应该统计卖出总数大于等于1020个
zdy0378 2007-07-01
  • 打赏
  • 举报
回复
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

}

}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧