繁体   English   中英

调试学校项目

[英]Debugging School Project

是的,我正在为学校编写程序,该程序的目的是找到最小数量的硬币,我是新手程序员,这是我第一次来,所以我不知道成千上万的其他事情,其他人不怎么做。 我编写了代码,并且可以正常工作,但是我似乎发现了一个要调用的错误/故障或错误。

我的代码

import java.util.Scanner;

public class Coin {

public static void main (String[] Args) {

    int quarters = 25;
    int dimes = 10;
    int nickles = 5;
    int pennies = 1;


    System.out.println("Enter in a number between 1-99");

    // "Input" Part of Code (Remember this and go back for reference)
    Scanner Userinput = new Scanner(System.in);

   int stuff = Userinput.nextInt();
   int q = stuff/quarters;
   String A = "Number of Quarters:" +q;


   System.out.println(A);

   int hold = stuff%quarters;
   int d = hold/dimes;
   String B = "Number of Dimes:" +d;

   System.out.println(B);

   int hold1 = stuff%dimes;
   int n = hold1/nickles;
   String C = "Number of Nickles:" +n;

   System.out.println(C);

   int hold2 = stuff%nickles;
   int p = hold2/pennies;
   String D = "Number of Pennies:" +p;

   System.out.println(D);

   System.out.println("Thank you for Using My Program");

      }
}

现在,一切正常,我可以输入我喜欢的任何数字并获得期望的结果,但是由于某些奇怪的原因,我无法理解我在75-79之间输入的任何数字,并且出于某种奇怪的原因,添加了一个Nickle,并且我花了2小时的大部分时间试图弄清楚到底是什么问题,但不能解决。 哈夫(Hav)尝试了几十个电话号码,但除了那一个小区域外,它们都可以正常工作。

有人可以偶然告诉我什么地方可能出问题吗?

您的hold = ...行应基于先前的hold值,而不是全部金额( stuff )。

int hold2 = hold%nickles;

您需要减去添加较大的先前硬币时已经考虑的金额。

例如,如果我说77,那么程序将检查77%10并返回7。您可能希望通过以前添加的任何硬币来调整“填充”值。 因此,在这种情况下,在添加了四分之三(75)之后,我们将需要设置“填充=填充-75(填充-= 75)”。

编辑:更精确地说,在每次计算之后,您都可以运行

stuff -= q * quarters;

当然,更改变量以使其适合代码的每个部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM