[英]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.