小芳的妈妈每天给她2.5元,她都会存起来,但是每当这一天是存钱的第五天或者5的倍数的话,妈妈会给她5元钱,请问经过多少天小芳才可以存到100元钱?

运行结果是35,正确答案是34,所以是哪个地方错了呢?
public class Money {

public static void main(String[] args) {
    double moneyday = 2.5;
    double money = 5;
    double sum = 0;
    double moneysum = 100;
    int day = 1;
    while (sum < moneysum) {
        if (day % 5 == 0) {
            sum += money;
        } else {
            sum += moneyday;
        }
        day++;
    }
    System.out.println(day);
}

}


 public static void main(String []args) {
    double moneyday = 2.5;
    double money = 5;
    double sum = 0;
    double moneysum = 100;
    int day = 0;
       do{
           day++; 
        if (day % 5 == 0) {
            sum += money;
        } else {
            sum += moneyday;
        }
           System.out.println(day);
       }while (sum < moneysum);
    }

day++的时间出错了。 你每次执行完之后天数+1,也就是第34次执行完之后会+1。

    double sum=0;   
     int  i= 0;                                           
    int count=0;
    do{
        i++;                                 
        sum+=2.5;                                        
        count++;                            
        if(count==5){                            
            sum=sum-6;                  
            count=0;        
        }
    }while(sum<100);    

System.out.println("需要多少天"+i+"天");

int day=1;这里错了 不是do while和while的问题,你这里应该把day的默认值定义为0,第一次给了钱day的值才为1,你这样定义是钱还没给就已经有1天了.
所以你可以改成 int day=0;

执行流程:
1:执行初始化语句
2:执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
3:执行循环体语句
4:执行条件控制语句
5:回到2继续

     格式:
         初始化语句;
         while (条件判断语句){
             循环体语句;
             条件控制语句;
         }