Java程序,cicle只工作2次

Java程序,cicle只工作2次,java,Java,我正在做一个练习,要求我用java编写一个程序,它需要以下内容: 假设你可以用1美元从学校的自动机器上买一块巧克力。 巧克力里面有一张优惠券。如果你有6张代金券,你可以免费得到一块巧克力。 假设你有N美元,你想买一些巧克力。例如,如果你有6美元 你可以得到7块巧克力(因为你在6块巧克力里面有6张代金券) 这6张优惠券可免费获得1块巧克力)。现在你只有1个 凭证有效,即7°巧克力的凭证。例如,12美元你就可以得到 14块巧克力,剩下给你2张优惠券 编写一个程序,接收一个N值,并打印出你能吃多少块巧

我正在做一个练习,要求我用java编写一个程序,它需要以下内容:

假设你可以用1美元从学校的自动机器上买一块巧克力。 巧克力里面有一张优惠券。如果你有6张代金券,你可以免费得到一块巧克力。 假设你有N美元,你想买一些巧克力。例如,如果你有6美元 你可以得到7块巧克力(因为你在6块巧克力里面有6张代金券) 这6张优惠券可免费获得1块巧克力)。现在你只有1个 凭证有效,即7°巧克力的凭证。例如,12美元你就可以得到 14块巧克力,剩下给你2张优惠券

编写一个程序,接收一个N值,并打印出你能吃多少块巧克力和多少 最后,有效凭证将保留给您。每次需要时,都要换巧克力和代金券 免费获得一块巧克力的代金券太多了

import java.util.Scanner;

public class Ripasso {

public static void main (String [] args) {

        String risposta;
        int dollar,pieceOfChocolate,voucher,dollar2,voucher2,pieceOfChocolate2;
        Scanner tastiera = new Scanner(System.in);
        System.out.println("How much dollar do you have");

        dollar = tastiera.nextInt();
        pieceOfChocolate = dollar;
        voucher = pieceOfChocolate;

        System.out.println("");
        System.out.println("You insert " + dollar + " dollar which gives you " + pieceOfChocolate + " piece of Chocolate");
        System.out.println("");
        System.out.println("You also have " + voucher + " voucher");
        System.out.println("");
        System.out.println("Every time you have 6 valid voucher you can get 1 piece of chocolate for free");
        System.out.println("");
        System.out.println("You can get " + (dollar/6) + " piece of Chocolate for free");
        System.out.println("");
        System.out.println("Now you have " + (pieceOfChocolate = (dollar/6) + pieceOfChocolate) +  " piece of Chocolate");
        System.out.println(""); 
        voucher = dollar%6;
        System.out.println("And you also have " + voucher + " voucher");

        boolean ciclo = true;

        while(ciclo){

            System.out.println("How much dollar do you have");

            dollar2 = tastiera.nextInt();
            voucher = dollar%6;
            voucher2 = dollar2%6;
            pieceOfChocolate = dollar2;
            pieceOfChocolate2 = (voucher2+voucher)/6;

            if (((voucher2+voucher)%6)<0){
                ciclo = false;
            } 

            System.out.println("");
            System.out.println("You can get " + (dollar2/6) + " piece of Chocolate for free");
            System.out.println("");
            System.out.println("Now you have " + (pieceOfChocolate = (dollar2/6) + pieceOfChocolate2 + pieceOfChocolate ) +  " piece of Chocolate");
            System.out.println("");
            System.out.println("And also you have " + ((voucher2+voucher)%6) + " voucher");

            }

} 

}
import java.util.Scanner;
公共级里帕索{
公共静态void main(字符串[]args){
字符串RISPASTA;
整数美元,现金片,凭证,美元2,凭证2,现金片2;
Scanner tastiera=新扫描仪(System.in);
System.out.println(“你有多少美元”);
dollar=tastiera.nextInt();
巧克力碎片=美元;
代金券=代金券;
System.out.println(“”);
System.out.println(“您插入“+dollar+”dollar,它给您“+pieceOfChocolate+”块巧克力”);
System.out.println(“”);
System.out.println(“您还有“+凭证+”凭证”);
System.out.println(“”);
System.out.println(“每次你有6张有效凭证,你就可以免费得到1块巧克力”);
System.out.println(“”);
System.out.println(“您可以免费获得”+(美元/6)+“一块巧克力”);
System.out.println(“”);
println(“现在你有了”+(巧克力碎片=(美元/6)+巧克力碎片)+“巧克力碎片”);
System.out.println(“”);
凭证=美元%6;
System.out.println(“您还有“+凭证+”凭证”);
布尔值ciclo=true;
while(ciclo){
System.out.println(“你有多少美元”);
dollar2=tastiera.nextInt();
凭证=美元%6;
voucher2=美元2%6;
巧克力碎片=美元2;
计件凭证2=(凭证2+凭证)/6;

如果(((凭证2+凭证)%6)问题陈述是:

编写一个程序,接收一个N值并打印出有多少个 你可以吃的巧克力,还有多少有效的代金券留给你 结束。每次换巧克力和代金券时都要用一块薄饼 免费获得一块巧克力的优惠券太多了。[原文如此]

英文翻译有点难理解,但我认为它要求的与您的代码实际执行的有很大不同。您的程序循环执行多次运行,其中它要求一定数量的资金,并试图直接计算通过在ca中花费所有资金可以获得的巧克力和代金券的数量ndy机器

然而,这个问题实际上似乎要求的是一个循环,在每次迭代中,如果有那么多可用的代金券,你会将代金券的数量减少六个,否则,如果还有,你会将金额减少一个单位,否则你就退出循环。在每次迭代中,你会增加购买的巧克力数量和代金券的数量每个人都有一张。最后,你要报告购买的巧克力数量和剩下的优惠券数量。这样做不需要任何除法或模运算


这样做效率也很低,正如你所认识到的,但是你执行计算的方法更直接地分解了大量的金钱。如果你真的想那样做,与任务的表面意图相反,那么考虑这个方法:

  • 每一美元可以给你一块巧克力和一张优惠券
  • 每六张代金券可获得一块巧克力和一张代金券,每块巧克力的净成本为五张代金券
  • 但除非你从0美元开始,否则你必须以至少一张优惠券结束,因为每次购买都会提供一张优惠券。(换句话说,你不能用最后五张优惠券购买巧克力。)
因此,如果你想这样做,那么公式是

chocolate =
    dollars               // purchases for dollars
    + (dollars - 1) / 5;  // purchases for vouchers


记住要考虑到一种特殊情况,即你从0美元开始,然后以0块巧克力和0张代金券结束。

我认为这个计划满足了你的需求

int dollar,pieceOfChocolate,voucher,dollar2,voucher2,pieceOfChocolate2;
    Scanner in = new Scanner(System.in);
    System.out.println("How much dollar do you have");

     dollar = in.nextInt();
    // voucher=
     pieceOfChocolate=dollar;
     voucher=pieceOfChocolate;
     pieceOfChocolate=dollar+voucher/6;
     voucher = voucher%6;
    System.out.println("you have  "+pieceOfChocolate+" chocolates and remaining voucher "+voucher);

    boolean ciclo = true;

    while(ciclo){

        System.out.println("How much dollar do you have");

        dollar2 = in.nextInt();
        pieceOfChocolate=dollar2;
     voucher = voucher+pieceOfChocolate;
     pieceOfChocolate=dollar2+voucher/6;
     voucher = voucher%6;

     if(voucher==0)
         break;

       System.out.println("you have  "+pieceOfChocolate+" chocolates and  remaining voucher "+voucher);
       }

为什么要对凭单进行模数运算?这似乎一点用处都没有。因为它们的拼写相似,我怀疑“cicle”的意思是“cycle”。从这里和上下文来看,我倾向于认为你真正想要的英语单词是“loop”.我能做什么?我不是说你的变量命名,尽管我们更喜欢用英语编写的代码。相反,我是说问题描述。从回答问题的角度来看,这更重要。我想要一个循环,每次人们插入钱时,程序都会打印出他能得到多少块巧克力,并显示他能得到多少o获得多少代金券。如果他有6张代金券,他可以免费获得1块巧克力。因此,例如,第一次我有6美元,我得到7块巧克力。第二次我有8美元,我得到8块巧克力,剩下3张代金券。第三次我插入13美元,我得到14块巧克力,exc…这个程序在你的系统中不起作用吗?这是一个问题有什么问题,请告诉我
int dollar,pieceOfChocolate,voucher,dollar2,voucher2,pieceOfChocolate2;
    Scanner in = new Scanner(System.in);
    System.out.println("How much dollar do you have");

     dollar = in.nextInt();
    // voucher=
     pieceOfChocolate=dollar;
     voucher=pieceOfChocolate;
     pieceOfChocolate=dollar+voucher/6;
     voucher = voucher%6;
    System.out.println("you have  "+pieceOfChocolate+" chocolates and remaining voucher "+voucher);

    boolean ciclo = true;

    while(ciclo){

        System.out.println("How much dollar do you have");

        dollar2 = in.nextInt();
        pieceOfChocolate=dollar2;
     voucher = voucher+pieceOfChocolate;
     pieceOfChocolate=dollar2+voucher/6;
     voucher = voucher%6;

     if(voucher==0)
         break;

       System.out.println("you have  "+pieceOfChocolate+" chocolates and  remaining voucher "+voucher);
       }