How can I fix my Java program to give accurate change?

  • Context: Comp Sci 
  • Thread starter Thread starter willie9142002
  • Start date Start date
  • Tags Tags
    Code Java
Click For Summary
SUMMARY

The forum discussion centers on a Java program designed to calculate and display change in coins, specifically addressing issues with handling pennies. The user reports that the program outputs incorrect results when multiple pennies are required, leading to repeated outputs. A suggested solution involves using a systematic approach to subtract larger denominations first (quarters, dimes, nickels) before addressing the remaining amount with pennies. The concept of modular arithmetic is introduced as a potential method to simplify the program significantly.

PREREQUISITES
  • Basic understanding of Java programming
  • Familiarity with control flow statements (if-else, loops)
  • Knowledge of coin denominations (quarters, dimes, nickels, pennies)
  • Concept of modular arithmetic
NEXT STEPS
  • Research Java control flow and loops for better program structure
  • Learn about modular arithmetic and its applications in programming
  • Explore Java's Math library for random number generation
  • Investigate best practices for debugging Java applications
USEFUL FOR

Beginner Java developers, programming students, and anyone interested in improving their skills in coin change algorithms and debugging Java code.

willie9142002
Messages
2
Reaction score
0
I had to write a java program that will give you the change for whatever random number that program picks. I keep having a problem with the pennies. If have to have more than one penny then program will repeat the output until it gets the pennines right. PLEASE HELP! I am not really good at Java so the program my look really bad please help!

import javax.swing.*;
public class CoinCounter
{

public static void main(String[] args)
{
int quarter = 25;
int dime = 10;
int nickel = 5;
int penny = 1;
int numQuarters = 0;
int numDimes = 0;
int numNickels = 0;
int numPennies = 0;



int r = (int)(Math.random() * 99);
int changeRequired = r;

while(changeRequired > 0){

if(changeRequired - quarter>= 0){
numQuarters ++;
changeRequired -= quarter;
continue;
}
if(changeRequired - dime >= 0){
numDimes ++;
changeRequired -= dime;
continue;
}
if(changeRequired - nickel >= 0){
numNickels ++;
changeRequired -= nickel;
continue;
}
if(changeRequired - penny >= 0){
numPennies ++;
changeRequired -= penny;

System.out.println("Your change is: " + r );
System.out.println(numQuarters+" Quarters");
System.out.println(numDimes+" Dimes");
System.out.println(numNickels+" Nickels");
System.out.println(numPennies+" Pennies");
}
}
}
}

Here is the output:
Your change is: 43
1 Quarters
1 Dimes
1 Nickels
1 Pennies
Your change is: 43
1 Quarters
1 Dimes
1 Nickels
2 Pennies
Your change is: 43
1 Quarters
1 Dimes
1 Nickels
3 Pennies

Process completed.
 
Physics news on Phys.org
The pennies is the "catch all" condition. I suspect if you used larger change amounts that your program would produce unexpected results. For example, 62 cents will return most likely something other than 2 quarters, 1 dime and 2 pennies (probably 1 quarter, 2 dimes, 3 nickels and 2 pennies). Using your logic, what you SHOULD do is keep subtracting quarters until you can subtract no more, then dimes, then nickels and the remainder must be pennies finally. Do you know about modular arithmetic? You can seriously do the entire program in 1 line of code with it.
 
Last edited:
jhicks
even with higher amounts is does that same thing only if i need more than one penny. So if it is was 62 it would give me 2 quarters, 1 dime, 1 penny then 2 quarters, 1 dime, 2 pennies. See my problem? How do I keep subtracting quarters until there are no more than dime and so on??!? I am really new and I am struggling to do this right. I have no clue what modular arithmetic is I am a 28 year old college freshman sationed overseas trying to get a degree so any help, books, or websites I should read would be a great help thanks in advance
 

Similar threads

  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 18 ·
Replies
18
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 37 ·
2
Replies
37
Views
5K
  • · Replies 2 ·
Replies
2
Views
4K