java - 添加将格式化值存储为数组下一行中的字符串的代码?

标签 java

我需要使用二维数组作为作业的一部分。

  1. 我需要在行计数器的主方法开头声明变量以及提供 10 行和 4 列的矩形字符串数组

  2. 在计算、格式化和显示每次计算结果的代码后面,添加将格式化值存储为数组下一行中的字符串的代码(您需要使用整数类的 toString 方法来存储年份值)。

我已经声明了一个 10x4 的数组和一个计数器变量, 但我在添加将格式化值存储为数组下一行中的字符串的代码时遇到问题(您需要使用整数类的 toString 方法来存储年份值)。

这是我在下面为这个问题(2)编写的代码,它似乎打印了一个空值列表,我如何让我的代码打印表格?在我看来,下面的代码是导致问题的代码,它是否正确?我有点困惑。

    FutureValueArray[counter][0] = Double.toString(monthlyInvestment);
    FutureValueArray[counter][1] = Double.toString(interestRate);
    FutureValueArray[counter][2] = Integer.toString(years);
    FutureValueArray[counter][3] = Double.toString(futureValue);
<小时/>
/*This is how my table should look like.
Inv/Mo. Rate Years Future Value
$100.00 8.0% 10 $18.416.57
$125.00 8.0% 10 $23,020.71*/


public static void main(String[] args)
{
    String[][] FutureValueArray = new String [10][4];
    int counter = 0;
    // display a welcome message
    System.out.println("Welcome to the Future Value Calculator");
    System.out.println();

    // perform 1 or more calculations
    Scanner sc = new Scanner(System.in);
    String choice = "y";
    while (choice.equalsIgnoreCase("y"))
    {

        // get the input from the user
        System.out.println("DATA ENTRY");
        double monthlyInvestment = getDoubleWithinRange(sc,
            "Enter monthly investment: ", 0, 1000);
        double interestRate = getDoubleWithinRange(sc,
            "Enter yearly interest rate: ", 0, 30);
        int years = getIntWithinRange(sc,
            "Enter number of years: ", 0, 100);

        // calculate the future value
        double monthlyInterestRate = interestRate/12/100;
        int months = years * 12;
        double futureValue = calculateFutureValue(
            monthlyInvestment, monthlyInterestRate, months);

        // get the currency and percent formatters
        NumberFormat currency = NumberFormat.getCurrencyInstance();
        NumberFormat percent = NumberFormat.getPercentInstance();
        percent.setMinimumFractionDigits(1);

        // format the result as a single string
        String results =
              "Monthly investment:\t"
                  + currency.format(monthlyInvestment) + "\n"
            + "Yearly interest rate:\t"
                  + percent.format(interestRate/100) + "\n"
            + "Number of years:\t"
                  +  years + "\n"
            + "Future value:\t\t"
                  + currency.format(futureValue) + "\n";

        // print the results
        System.out.println();
        System.out.println("FORMATTED RESULTS");
        System.out.println(results);

        FutureValueArray[counter][0] = Double.toString(monthlyInvestment);
        FutureValueArray[counter][1] = Double.toString(interestRate);
        FutureValueArray[counter][2] = Integer.toString(years);
        FutureValueArray[counter][3] = Double.toString(futureValue);
        for(int i = 0; i < FutureValueArray.length; i++)
        {
            for (int j = 0; j < FutureValueArray[i].length; j++)
                System.out.println(FutureValueArray[i][j] + " ");
            System.out.println("\n");
        }
        // see if the user wants to continue
        System.out.print("Continue? (y/n): ");
        choice = sc.next();
        counter++;
        System.out.println();
    }
}

最佳答案

你的代码看起来不错。

如果你改变

for(int i = 0; i < FutureValueArray.length; i++)

for(int i = 0; i <= counter; i++)

您不会打印尚未设置的 FutureValueArray 行的 null。

此外,您似乎想在该循环内使用 System.out.print() 函数,而不是 System.out.println() 函数。

关于java - 添加将格式化值存储为数组下一行中的字符串的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15747838/

相关文章:

java - 代码未返回足够大的十进制数

java - 以编程方式启动 Appium 服务器

java - 来自 URL 或 java 输入流的 Matlab openfig

java - 现实世界中的 ORM

java - 正则表达式从文件中获取所有 ".js"和 ".css"href 链接

java - 如何在java中的ArrayList中使用继承?

java - 如何防止用户修改其他用户的数据?

java - MyBatis 3.0.5 和 mappers 加载问题

java - 在javafx中的sql server 2014中插入一行数据

java - 对 JavaFX 应用程序进行单元测试时出现“工具包未初始化”异常