繁体   English   中英

数组利率修订:

[英]Array Interest Rate Revised:

我遇到了错误,“错误:二元运算符'*'的操作数类型错误” for interestEarned = salary * interestRate;

我在multiplicator = 1 + interestRate;遇到了类似的错误。

我遇到的另一个错误是“/Project3Revised.java:87: error: double cannot be dereferenced” for (int i; i < interestEarned.length; i++) {System.out.println("Year: " + year + " Interest Earned: " + interestEarned.get[i] + " Balance: " + balance);

我不知道如何解决这些问题。 这是我想在我的程序示例编译中看到的:

Enter input: salary savings_rate years_employed name(last,first)

The user inputs > 70000 .10 30 smith john

Salary: 70000.0

Savings rate:0.1

Interest rate:0.0

Years of Employment: 30.0

Last Name: smith

First Name: john

Year: 1 Rate: 0.06  Interest Earned: 420.00 Balance: 7420.00

Year: 2 Rate: 0.06  Interest Earned: 865.20 Balance: 15285.20

Year: 3 Rate: 0.06  Interest Earned: 1337.11 Balance: 23622.31

Year: 4 Rate: 0.06  Interest Earned: 1837.34 Balance: 32459.65

Year: 5 Rate: 0.06  Interest Earned: 2367.58 Balance: 41827.23

Year: 6 Rate: 0.02  Interest Earned: 976.54 Balance: 49803.77

Year: 7 Rate: 0.02  Interest Earned: 1136.08 Balance: 57939.85

Year: 8 Rate: 0.02  Interest Earned: 1298.80 Balance: 66238.65

Year: 9 Rate: 0.02  Interest Earned: 1464.77 Balance: 74703.42

Year: 10 Rate: 0.02  Interest Earned: 1634.07 Balance: 83337.49

Year: 11 Rate: 0.15  Interest Earned: 13550.62 Balance: 103888.11

Year: 12 Rate: 0.15  Interest Earned: 16633.22 Balance: 127521.33

Year: 13 Rate: 0.15  Interest Earned: 20178.20 Balance: 154699.53

Year: 14 Rate: 0.15  Interest Earned: 24254.93 Balance: 185954.46

Year: 15 Rate: 0.15  Interest Earned: 28943.17 Balance: 221897.62

Year: 16 Rate: 0.00  Interest Earned: 0.00 Balance: 228897.62

Year: 17 Rate: 0.00  Interest Earned: 0.00 Balance: 235897.62

Year: 18 Rate: 0.00  Interest Earned: 0.00 Balance: 242897.62

Year: 19 Rate: 0.30  Interest Earned: 74969.29 Balance: 324866.91

Year: 20 Rate: 0.30  Interest Earned: 99560.07 Balance: 431426.99

Year: 21 Rate: -0.04  Interest Earned: -17537.08 Balance: 420889.91

Year: 22 Rate: -0.04  Interest Earned: -17115.60 Balance: 410774.31

Year: 23 Rate: -0.04  Interest Earned: -16710.97 Balance: 401063.34

Year: 24 Rate: -0.04  Interest Earned: -16322.53 Balance: 391740.80

Year: 25 Rate: -0.04  Interest Earned: -15949.63 Balance: 382791.17

Year: 26 Rate: 0.03  Interest Earned: 11693.74 Balance: 401484.91

Year: 27 Rate: 0.03  Interest Earned: 12254.55 Balance: 420739.45

Year: 28 Rate: 0.03  Interest Earned: 12832.18 Balance: 440571.64

Year: 29 Rate: 0.03  Interest Earned: 13427.15 Balance: 460998.79

Year: 30 Rate: 0.03  Interest Earned: 14039.96 Balance: 482038.75 

这是我的程序的主要代码。

import java.util.Scanner;

public class Project3Revised {
public static void main(String[] args) {

    Scanner scnr = new Scanner(System.in);

    int salary;
    double savingsRate;
    double employmentYears;
    double retirementSavings;


    System.out.println("Enter input salary savings_rate years_employed lastname firstname");

    salary = scnr.nextInt();
    savingsRate = scnr.nextDouble();
    employmentYears = scnr.nextDouble();
    String l = scnr.next(); // Last Name
    String f = scnr.next(); // First Name
    double[] interestRate = { 0,.06,.06,.06,.06,.06,.02,.02,.02,.02,.02,.15,.15,.15,.15,.15,0,0,0,.30,.30,-.04,-.04,-.04,-.04,-.04,.03,.03,.03,.03,.03 };

    if (salary < 0) {
        System.out.println("Salary is negative");
    }
    else if (salary > 1000000) {
        System.out.println("Error: Salary " + salary + "exceeds maximum 1000000.0");
    }
    else {
        System.out.println("Salary: " + salary);
    }

    if (savingsRate < 0) {
        System.out.println("Savings rate is negative");
    }
    else if (savingsRate > 0.5) {
        System.out.println("Error: Savings rate " + savingsRate + "exceeds maximum 0.5");
    }
    else {
        System.out.println("Savings Rate:" + savingsRate);
    }

    if (employmentYears < 0) {
        System.out.println("Years employed is negative!");
    }
    else if (employmentYears > 50) {
        System.out.println("Error: Years employed " + employmentYears + "exceeds maximum 50");
    }
    else {
        System.out.println("Years of Employment: " + employmentYears);
    }

    if (l.length() == 0 || l.length() == 1) {
       System.out.println("Error: Name too short");
    }
    else if (l.equals(f)) {
        System.out.println("Error: Last Name and First Name are the same");
    }
    else {
        System.out.println("Last Name: " + l);
    }

    if (f.length() == 0 || f.length() == 1) {
        System.out.println("Error: Name too short");
    }
    else if (f.equals(l)) {
        System.out.println("Error: Last Name and First Name are the same");
    }
    else {
        System.out.println("First Name: " + f);
    }

    System.out.println(" ");
    System.out.println(" ");

    int year;
    double interestEarned;
    double balance; 
    double multiplicator; // Interest earned plus an increment

    year = 0;
    interestEarned = salary * interestRate;
    balance = salary * savingsRate + interestEarned;
    multiplicator = 1 + interestRate;

    for (int i; i < interestEarned.length; i++) {
        ++year;
        System.out.println("Year: " + year + " Interest Earned: " + interestEarned.get[i] + " Balance: " + balance);

    }


  }
}

对于double cannot be dereferenced错误:

interestEarned是一个单独的数值(一个double ),但您正试图像数组一样使用它。

对于bad operand types错误,您会遇到相反的问题: interestRate是一个数组,但您试图将其用作单个数值。

这种单个值和 arrays 的混合可以在 Python 中的 numpy/pandas 中工作,但在 Java 中不起作用。

我不能 100% 确定代码应该做什么,但是您必须对单个数组元素(可能在循环中)执行数学计算,并确保您不会将单个数字与 arrays 混淆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM