Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multidata Type Array In Java

Complete newbie here guys. I'm working on a Java program to prompt the user for 3 variables which are used to calculate a future investment's value. Everything works perfectly, except when it comes time to put both my datatypes into ONE array.

Here's what the output SHOULD look like:

Year        Future Value
1            $1093.80
2            $1196.41
3            $1308.65
...

This is what mine looks like:

Year 1
Future Value 1093.81
Year 2
Future Value 1196.41
Year 3
Future Value 1308.65
...

My year is an int value and my Future value is a double (rounded). I've been sitting here racking my brain and all the forums I can find and haven't been successful. Every time I put both value into an array I get an error about putting two different datatypes together. Any insight would be greatly appreciated. Below is the code for my full program:

import java.util.Scanner;

class investmentValue {
    public static void main(String[] args) {
            Scanner s = new Scanner(System.in);

            System.out.print("Enter investment amount: $");
            double i = s.nextDouble();

            System.out.print("Enter percentage rate: ");
            double r = s.nextDouble()/100;

            System.out.print("Enter number of years: ");
            int y = s.nextInt();

            for (y=1; y<=30; y++) {
                double f = futureInvestmentValue(i,r,y);

                System.out.println("Year " + y);
                System.out.println("Future Value " + f);
            }
}

public static double futureInvestmentValue (double investmentAmount, double monthlyInterestRate, int years){
    double value=1;

    value = investmentAmount*Math.pow((1+(monthlyInterestRate/12)),(years * 12));
    double roundValue = Math.round(value*100.0)/100.0;

    return roundValue;

    }
}
like image 691
Zeb23 Avatar asked Nov 27 '25 04:11

Zeb23


1 Answers

One solution is to start by implementing a pad function. Something like,

public static String pad(String in, int len) {
    StringBuilder sb = new StringBuilder(len);
    sb.append(in);
    for (int i = in.length(); i < len; i++) {
        sb.append(' ');
    }
    return sb.toString();
}

Now we can combine that with String.format() to get the dollars and cents, use a consistent printf() for the header and output lines. To get something like,

// Print the header.
System.out.printf("%s %s%n", pad("Year", 12), "Future Value");
for (int y = 1; y <= 30; y++) {
    String year = pad(String.valueOf(y), 13); // <-- One more in your alignment.
    String fv = String.format("$%.2f", futureInvestmentValue(i,r,y));
    System.out.printf("%s %s%n", year, fv);
}
like image 125
Elliott Frisch Avatar answered Nov 29 '25 18:11

Elliott Frisch



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!