Enter investment amount: 1500 Enter interest rate in %: 4.5 Enter number of years: 5 OUTPUT Investment=$1500.0 Rate=4.5% Number of Years=5 Your final Amount : $1869.27
Solution
public class exer1 {
/* program that calculates the compounding value of an investment I with a given interest rate R and a given
duration in years D. */
public static void main(String args[]) {
/* Variables */
float investmentAmount;
float interestRate;
float finalAmount;
int nbYears;
int i;
/* Program statements go here. */
/*Reading input*/
System.out.print("Enter investment amount: ");
investmentAmount=Keyboard.in.readFloat().floatValue();
System.out.print("Enter interest rate in %: ");
interestRate=Keyboard.in.readFloat().floatValue();
System.out.print("Enter number of years: ");
nbYears=Keyboard.in.readInteger().intValue();
/*Calculating the compounding investment*/
finalAmount=investmentAmount;
for(i=0;i<nbYears;i++) {
finalAmount = finalAmount + (finalAmount*interestRate/100);
}
/*making sure there are only two digits after decimal point*/
finalAmount=((float)Math.round(finalAmount*100))/100;
investmentAmount=((float)Math.round(investmentAmount*100))/100;
/*printing the output*/
System.out.println("Investment=$" +investmentAmount);
System.out.println("Rate=" +interestRate+"%");
System.out.println("Number of Years=" +nbYears);
System.out.println("Your final Amount : $" + finalAmount);
}
}
Enter investment amount: 1500
Enter interest rate in %: 4.5
Enter number of years: 5
Interest Compounded: (1)Yearly, (2)Every 6 months, (3)Monthly:6
(1)Yearly, (2)Every 6 months, (3)Monthly:abc
(1)Yearly, (2)Every 6 months, (3)Monthly:33
(1)Yearly, (2)Every 6 months, (3)Monthly:3
OUTPUT
Investment=$1500.0
Rate=4.5%
Number of Years=5
Period: Monthly
Your final Amount : $1877.69
Solution
public class exer1 {
/* program that calculates the compounding value of an investment I with a given interest rate R and a given
duration in years D. */
public static void main(String args[]) {
/* Variables */
float investmentAmount;
float interestRate;
float finalAmount;
int nbYears;
int nbPeriods;
float intRate;
String label;
int i;
char mySelection;
/* Program statements go here. */
/*Reading input*/
System.out.print("Enter investment amount: ");
investmentAmount=Keyboard.in.readFloat().floatValue();
System.out.print("Enter interest rate in %: ");
interestRate=Keyboard.in.readFloat().floatValue();
System.out.print("Enter number of years: ");
nbYears=Keyboard.in.readInteger().intValue();
System.out.print("Interest Compounded:");
mySelection=question("(1)Yearly, (2)Every 6 months, (3)Monthly:","123");
/*Determining the number of periods,
the interest rate to use, and the label for period*/
switch(mySelection) {
case '1': nbPeriods=nbYears;
intRate = interestRate;
label="Yearly";
break;
case '2': nbPeriods=nbYears*2;
intRate = interestRate/2;
label="Every 6 months";
break;
case '3': nbPeriods=nbYears*12;
intRate = interestRate/12;
label="Monthly";
break;
default: nbPeriods=0;
intRate = 0f;
label="Unknown";
}
/*Calculating the compounding investment*/
finalAmount=investmentAmount;
for(i=0;i<nbPeriods;i++) {
finalAmount = finalAmount + (finalAmount*intRate/100);
}
/*making sure there are only two digits after decimal point*/
finalAmount=((float)Math.round(finalAmount*100))/100;
investmentAmount=((float)Math.round(investmentAmount*100))/100;
/*printing the output*/
System.out.println("Investment=$" +investmentAmount);
System.out.println("Rate=" +interestRate+"%");
System.out.println("Number of Years=" +nbYears);
System.out.println("Period:" +label);
System.out.println("Your final Amount : $" + finalAmount);
}
public static char question(String theQuestion, String validChoice) {
char theChoice;
String userInput;
do{
System.out.print(theQuestion);
userInput=Keyboard.in.readString();
theChoice = userInput.charAt(0);
} while (validChoice.indexOf(theChoice)==-1 || userInput.length()!=1);
return theChoice;
}
}
Solution
public class exer1 {
/* program that calculates the compounding value of an investment I with a given interest rate R and a given
duration in years D. */
public static void main(String args[]) {
/* Variables */
float investmentAmount;
float interestRate;
float finalAmount;
int nbYears;
Investment myInvestment;
/* Program statements go here. */
do {
/*Reading input*/
System.out.println("\nEnter amount 0 to quit.");
System.out.print("Enter investment amount: ");
investmentAmount=Keyboard.in.readFloat().floatValue();
if (investmentAmount !=0f) {
System.out.print("Enter interest rate in %: ");
interestRate=Keyboard.in.readFloat().floatValue();
System.out.print("Enter number of years: ");
nbYears=Keyboard.in.readInteger().intValue();
System.out.print("Interest Compounded:");
myInvestment=new Investment(investmentAmount,interestRate,nbYears);
/*asking for periodicity and assigning a ratio*/
myInvestment.question();
/*printing the result for an investment*/
myInvestment.display();
}
} while (investmentAmount!=0f);
}
}
public class Investment {
/*Instance Variables*/
private float investment;
private float yearlyRate;
private int years;
private int ratio;
/*constructor Investment*/
public Investment(float sum, float percent, int duration){
this.investment=sum;
this.yearlyRate=percent;
this.years=duration;
this.ratio=1;
}
/*calculates the final amount based on rate and duration*/
public float calculate(){
int i;
float finalAmount=this.investment;
for (i=0; i<(this.years*this.ratio);i++)
finalAmount=finalAmount+finalAmount*(this.yearlyRate/this.ratio)/100;
return finalAmount;
}
/*dislays investment info*/
public void display(){
float finalAmount;
finalAmount=this.calculate();
/*making sure there are only two digits after decimal point*/
finalAmount=((float)Math.round(finalAmount*100))/100;
System.out.println("Investment=$" +this.investment);
System.out.println("Rate=" +this.yearlyRate+"%");
System.out.println("Number of Years=" +this.years);
System.out.println("Period:" + this.periodicity());
System.out.println("Your final Amount : $" + finalAmount);
}
/*generates a label for periodicity*/
private String periodicity(){
switch(this.ratio) {
case 1: return "Yearly";
case 2: return "Every 6 months";
case 3: return "Quaterly";
case 12:return "Monthly";
default: return "Unknown";
}
}
/*asks a question to determine periodicity*/
public void question() {
String theQuestion = "(1)Yearly, (2)Every 6 months, (3)Monthly:";
String validChoice = "123";
char theChoice;
String userInput;
do{
System.out.print(theQuestion);
userInput=Keyboard.in.readString();
theChoice = userInput.charAt(0);
} while (validChoice.indexOf(theChoice)==-1 || userInput.length()!=1);
switch(theChoice) {
case '1': this.ratio=1;
break;
case '2': this.ratio=2;
break;
case '3': this.ratio=12;
break;
}
}
}
Enter amount 0 to quit. Enter investment amount: 1500 Enter interest rate in %: 4.5 Enter number of years: 5 Interest Compounded:(1)Yearly, (2)Every 6 months, (3)Monthly:1 Year Ratio Investment Increase Amount End of Year 1 4.5 1500.0 67.5 1567.5 2 4.5 1567.5 70.54 1638.04 3 4.5 1638.04 73.71 1711.75 4 4.5 1711.75 77.03 1788.78 5 4.5 1788.78 80.49 1869.27 Enter amount 0 to quit. Enter investment amount: 1500 Enter interest rate in %: 4.5 Enter number of years: 5 Interest Compounded:(1)Yearly, (2)Every 6 months, (3)Monthly:2 Year Ratio Investment Increase Amount End of Year 1 4.5 1500.0 33.75 1533.75 1 4.5 1533.75 34.51 1568.26 2 4.5 1568.26 35.29 1603.55 2 4.5 1603.55 36.08 1639.63 3 4.5 1639.63 36.89 1676.52 3 4.5 1676.52 37.72 1714.24 4 4.5 1714.24 38.57 1752.81 4 4.5 1752.81 39.44 1792.25 5 4.5 1792.25 40.32 1832.57 5 4.5 1832.57 41.24 1873.81
Solution
Add the followintg method in the Investment class:
/*calculates the final amount based on rate and duration*/
public float displayPerYear(){
int i;
float finalAmount=this.investment;
int currentYear=0;
float initial = this.investment;
float finalSum;
float increase;
System.out.println("\nYear\tRatio\tInvestment\tIncrease\tAmount End of Year");
for (i=0; i<(this.years*this.ratio);i++){
if (this.ratio==1 || (this.ratio==2&&i%2==0)|| (this.ratio==12 && i%12==0)) {
currentYear+=1;
}
initial=(float)Math.round(finalAmount*100)/100;
finalAmount=finalAmount+finalAmount*(this.yearlyRate/this.ratio)/100;
finalSum=(float)Math.round(finalAmount*100)/100;
increase=(float)Math.round((finalSum-initial)*100)/100;
System.out.print(currentYear+"\t"+this.yearlyRate+"\t");
System.out.print(initial+"\t\t"+increase+"\t\t");
System.out.println(finalSum);
}
return finalAmount;
}
In the main method, replace the statement myInvestment.display(); by the statement myInvestment.displayPerYear();.
Solution