Connecting Tech Pros Worldwide Help | Site Map

Need help writting an apllication 2 prompt for and read double value monetary amount

Newbie
 
Join Date: Jan 2007
Posts: 2
#1: Jan 23 '07
Need help with writting an application that prompt for and read a double value representing a monetary amount.
--------------------------------------------------------------------------------

Hello all, I am new to this Java stuff and, I need help in writting an application will prompt for and read a double value representing a monetary amount.Then determine the fewest numbers of each bill and coin needed to represent that amount, starting with the highest (maximum size needed is a ten dollar bill).
For example if the value entered is 47.63 then the program should print:
4 ten dollar bills
1 five dollar bills
2 one dollar bills
2 quarters
1 dimes
0 nickels
3 pennies

Help ASAP!!!!!!!!!!!!!!!!!!!
Lives Here
 
Join Date: Sep 2006
Posts: 12,070
#2: Jan 23 '07

re: Need help writting an apllication 2 prompt for and read double value monetary amount


Quote:

Originally Posted by Java1963

Need help with writting an application that prompt for and read a double value representing a monetary amount.
--------------------------------------------------------------------------------

Hello all, I am new to this Java stuff and, I need help in writting an application will prompt for and read a double value representing a monetary amount.Then determine the fewest numbers of each bill and coin needed to represent that amount, starting with the highest (maximum size needed is a ten dollar bill).
For example if the value entered is 47.63 then the program should print:
4 ten dollar bills
1 five dollar bills
2 one dollar bills
2 quarters
1 dimes
0 nickels
3 pennies

Help ASAP!!!!!!!!!!!!!!!!!!!

First you need to have an algorithm for this. The most common and perhaps most efficient for this problem is the greedy algorithm. Look it up for the coin problem and understand it. This part has nothing to do with Java and can be found in any material that discusses algorithms.
After that you now want to convert your algorithm into a working Java program. This should be easy once the algorithm is right. Just post whatever you will have done and we will be able to help you.
Newbie
 
Join Date: Jan 2007
Posts: 2
#3: Jan 23 '07

re: Need help writting an apllication 2 prompt for and read double value monetary amount


Hello all, I am new to this Java stuff and, I need help in writting an application will prompt for and read a double value representing a monetary amount.Then determine the fewest numbers of each bill and coin needed to represent that amount, starting with the highest (maximum size needed is a ten dollar bill).
For example if the value entered is 47.63 then the program should print:
4 ten dollar bills
1 five dollar bills
2 one dollar bills
2 quarters
1 dimes
0 nickels
3 pennies

This is what I have so far but not sure if I am on the right track. Can any one Help?



Expand|Select|Wrap|Line Numbers
  1. public class Ch02prog1 {
  2.  
  3.     /**
  4.      * @param args
  5.      */
  6.     public static void main(String[] args) {
  7.         //Write an application that prompts for and read 
  8.         //a double value representing a monetary amount.
  9.  
  10.     }
  11.     Scanner Scan = new Scanner(System.in);
  12.     int value = Scan.nextInt();
  13.     double value =scan.nextdouble();
  14.  
  15.     System.Out.Println(value/1000);
  16.     system.out.println(value%/100);
  17.     system.out.println(value%/10);
  18.     system.out.println(value%/1);
  19.  
  20.     String FirstDigit= Scan.next();
  21.     String SecondDigit= Scan.next();
  22.     String ThirdDigit= Scan.next();
  23.     String FourthDigit=Scan.next();
  24.     int Result= 
  25.  
  26.    System.out.println(Result);
  27.  
  28. }
Lives Here
 
Join Date: Sep 2006
Posts: 12,070
#4: Jan 24 '07

re: Need help writting an apllication 2 prompt for and read double value monetary amount


Quote:

Originally Posted by Java1963

Hello all, I am new to this Java stuff and, I need help in writting an application will prompt for and read a double value representing a monetary amount.Then determine the fewest numbers of each bill and coin needed to represent that amount, starting with the highest (maximum size needed is a ten dollar bill).
For example if the value entered is 47.63 then the program should print:
4 ten dollar bills
1 five dollar bills
2 one dollar bills
2 quarters
1 dimes
0 nickels
3 pennies

This is what I have so far but not sure if I am on the right track. Can any one Help?



Expand|Select|Wrap|Line Numbers
  1. public class Ch02prog1 {
  2.  
  3.     /**
  4.      * @param args
  5.      */
  6.     public static void main(String[] args) {
  7.         //Write an application that prompts for and read 
  8.         //a double value representing a monetary amount.
  9.  
  10.     }
  11.     Scanner Scan = new Scanner(System.in);
  12.     int value = Scan.nextInt();
  13.     double value =scan.nextdouble();
  14.  
  15.     System.Out.Println(value/1000);
  16.     system.out.println(value%/100);
  17.     system.out.println(value%/10);
  18.     system.out.println(value%/1);
  19.  
  20.     String FirstDigit= Scan.next();
  21.     String SecondDigit= Scan.next();
  22.     String ThirdDigit= Scan.next();
  23.     String FourthDigit=Scan.next();
  24.     int Result= 
  25.  
  26.    System.out.println(Result);
  27.  
  28. }

Wow. You are definitely not cruising on the right path. Now I'm going to post a very lame attempt at this. The program works but is not precisely correct. The idea is that I want to show you how to write such a program. So I want you to go through it line by line and ask where you do not understand then maybe together we can improve it until it becomes precisely correct.

Expand|Select|Wrap|Line Numbers
  1. import java.util.Scanner; //You have to import Scanner if you want to use it
  2. class One {
  3.     public static void main(String[] args) {
  4.                     Scanner scanner = new Scanner(System.in);
  5.         System.out.print("Enter the amount: ");
  6.         double amount = scanner.nextDouble(); //Java is case sensitive so nextDouble() != nextdouble
  7.         //You set the coins and/or notes denominations here
  8.                         // 1c     5c  10c  25c   50c  $1  $5 $10
  9.         double[] coins = {0.01, 0.05, .1,  0.25, 0.5,  1,  5, 10}; //Put your denominations here
  10.         double[] soln = new double[coins.length];
  11.         double current = 0.0;
  12.         int i = coins.length - 1;
  13.         while(i >= 0) {
  14.             double val = coins[i];
  15.             while((val + current) <= amount) {
  16.                 current = current + val;
  17.                 soln[i] = soln[i] + coins[i];
  18.             }
  19.             i--;
  20.         }
  21.         System.out.println(current); // Check this value for amounts containing .1
  22.         for(int j = 0;j < coins.length; j++) {
  23.             System.out.println(coins[j] + " : " + soln[j] / coins[j]);
  24.         }
  25.  
  26.     }
  27. }
  28.  
Newbie
 
Join Date: Sep 2008
Posts: 6
#5: Sep 9 '08

re: Need help writting an apllication 2 prompt for and read double value monetary amount


Quote:

Originally Posted by r035198x

Wow. You are definitely not cruising on the right path. Now I'm going to post a very lame attempt at this. The program works but is not precisely correct. The idea is that I want to show you how to write such a program. So I want you to go through it line by line and ask where you do not understand then maybe together we can improve it until it becomes precisely correct.

Expand|Select|Wrap|Line Numbers
  1. import java.util.Scanner; //You have to import Scanner if you want to use it
  2. class One {
  3.     public static void main(String[] args) {
  4.                     Scanner scanner = new Scanner(System.in);
  5.         System.out.print("Enter the amount: ");
  6.         double amount = scanner.nextDouble(); //Java is case sensitive so nextDouble() != nextdouble
  7.         //You set the coins and/or notes denominations here
  8.                         // 1c     5c  10c  25c   50c  $1  $5 $10
  9.         double[] coins = {0.01, 0.05, .1,  0.25, 0.5,  1,  5, 10}; //Put your denominations here
  10.         double[] soln = new double[coins.length];
  11.         double current = 0.0;
  12.         int i = coins.length - 1;
  13.         while(i >= 0) {
  14.             double val = coins[i];
  15.             while((val + current) <= amount) {
  16.                 current = current + val;
  17.                 soln[i] = soln[i] + coins[i];
  18.             }
  19.             i--;
  20.         }
  21.         System.out.println(current); // Check this value for amounts containing .1
  22.         for(int j = 0;j < coins.length; j++) {
  23.             System.out.println(coins[j] + " : " + soln[j] / coins[j]);
  24.         }
  25.  
  26.     }
  27. }
  28.  

Can you please decribe exact what each section is doing and the purpose of the array? Im very new to java and am trying to understand this problem in terms of translating the algorithm in java format.
Nepomuk's Avatar
Moderator
 
Join Date: Aug 2007
Location: Germany
Posts: 2,466
#6: Sep 9 '08

re: Need help writting an apllication 2 prompt for and read double value monetary amount


Quote:

Originally Posted by meekstro

Can you please decribe exact what each section is doing and the purpose of the array? Im very new to java and am trying to understand this problem in terms of translating the algorithm in java format.

OK, it's not my code, but I'll go through it with you.
Expand|Select|Wrap|Line Numbers
  1. import java.util.Scanner; //You have to import Scanner if you want to use it
As the comment (that text behind "//") says, the external class Scanner which is in the package java.util has to be imported, so that our program knows what it is. You could also have an own class called Scanner, that does something completely else, say in org.mystuff.hardware (I just invented that one).
Expand|Select|Wrap|Line Numbers
  1. class One {
  2.     ...
  3. }
This opens and closes a class called "One".
Expand|Select|Wrap|Line Numbers
  1. public static void main(String[] args) {
  2.     ...
  3. }
This is the main method. When you run your application, the main method you point to is called. Everything else must be started from here.
Expand|Select|Wrap|Line Numbers
  1.                     Scanner scanner = new Scanner(System.in);
Here we are creating a new Object from the (imported) class Scanner. As you can see in it's API Documentation, the Scanner class has a constructor which takes an InputStream. System.in is the standard input.
Expand|Select|Wrap|Line Numbers
  1.         System.out.print("Enter the amount: ");
Prints the String "Enter the amount: " to the standard output (normally a console window).
Expand|Select|Wrap|Line Numbers
  1.         double amount = scanner.nextDouble(); //Java is case sensitive so nextDouble() != nextdouble
Here, our Scanner object reads a double value.
Expand|Select|Wrap|Line Numbers
  1. //You set the coins and/or notes denominations here
  2.                 // 1c     5c  10c  25c   50c  $1  $5 $10
  3. double[] coins = {0.01, 0.05, .1,  0.25, 0.5,  1,  5, 10}; //Put your denominations here
This is just an array with the given double values.
Expand|Select|Wrap|Line Numbers
  1. double[] soln = new double[coins.length];
  2. double current = 0.0;
Setting some variables, that we'll need later
Expand|Select|Wrap|Line Numbers
  1. int i = coins.length - 1;
  2. while(i >= 0) {
  3.     double val = coins[i];
  4.     while((val + current) <= amount) {
  5.         current = current + val;
  6.         soln[i] = soln[i] + coins[i];
  7.     }
  8.     i--;
  9. }
This is a while loop with another nested while loop inside. The outer loop could have been a for loop too.
What happens is: The variable val is created with the value of the i-th coin in the array. Then the while loop checks, if the current amount of money is still small enough to add whatever coin you're using at the moment and still be within the amount given by the user. If so, the current coin is added to the current amount and the variable [i]soln is risen by the value of that coin. This way, the array will show you how much money was paid with by which type of coin. Last but not least, the counter i is decremented (=> i = i - 1).
Expand|Select|Wrap|Line Numbers
  1.         System.out.println(current); // Check this value for amounts containing .1
  2. for(int j = 0;j < coins.length; j++) {
  3.     System.out.println(coins[j] + " : " + soln[j] / coins[j]);
  4. }
Basically print out your results.

There, I hope that helps you understand the program and Java in general.

Greetings,
Nepomuk
Newbie
 
Join Date: Sep 2008
Posts: 6
#7: Sep 9 '08

re: Need help writting an apllication 2 prompt for and read double value monetary amount


Thankyou. That helped my understanding immensly.
Reply