Java兴趣计算器不会编译,不知道为什么

Bak*_*s92 1 java if-statement syntax-error

我正在用Java编写兴趣计算器.程序提示用户输入,并使用该输入计算某个银行帐户的利息(检查,储蓄或CD).

这是我的程序的要点,它非常简单.但是现在我很难理解为什么return语句在createAccount方法中不起作用.任何帮助,将不胜感激.

Banker.java:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Banker {

// Array for type of bank account
public static void createAndShowGUI() {


    // Declare strings for period, balance, rate
    String period;
    String balance;
    String rate;
    String type;
    String input;

    // Prompt for account type
    String[] accttype = {"Checking", "Savings", "CD"}; // Array of bank acct types
    input = (String) JOptionPane.showInputDialog(null, "Choose account...",
            "Choose bank account type", JOptionPane.QUESTION_MESSAGE, null,
            accttype, // Array of acct types
            accttype[0]); // First choice


    // Prompt user for input
    period = JOptionPane.showInputDialog(null, "Number of periods (length):");
    balance = JOptionPane.showInputDialog(null, "Beginning balance:");
    rate = JOptionPane.showInputDialog(null, "Interest rate (use decimal, example: .05 = 5%):");

    // Make Calculate button
    JButton calculate = new JButton("Calculate");

    // Make 2 Labels
    JLabel blabel = new JLabel("Period: " + period);
    JLabel plabel = new JLabel("Balance: " + balance);

    // Setup window with flow layout and exit on close
    JFrame frame = new JFrame("Interest Savings Calculator Plus");
    frame.setLayout(new FlowLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // Add combo box, calc button and labels
    frame.add(calculate);

    frame.add(plabel);
    frame.add(blabel);

    //Display the window.
    frame.pack();
    frame.setVisible(true);

}

public static Account createAccount(String type, String checkno, String lengthm, String input) {
    String message = "Would you like to open another account?";
    String title = "Are you sure?";
    if (input == "Checking") {
        checkno = JOptionPane.showInputDialog(null, "First check number:");

        // display the JOptionPane showConfirmDialog
        int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
        if (reply == JOptionPane.YES_OPTION) {
            System.exit(0);

        }
    } else if (input == "CD") {
        lengthm = JOptionPane.showInputDialog(null, "Length until maturity:");

        // display the JOptionPane showConfirmDialog
        int reply = JOptionPane.showConfirmDialog(null, message, title,     JOptionPane.YES_NO_OPTION);
        if (reply == JOptionPane.YES_OPTION) {
            System.exit(0);
            return input;
        }
    }
}

public static void main(String[] args) {
    createAndShowGUI();
}
}
Run Code Online (Sandbox Code Playgroud)

Acccount.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Account implements ActionListener {

JButton calculate;
private int period;
private int balance;
private int fbalance;
private int rate;
private int monthlyFee;
private String printstring;

@Override
public String toString() {
    return String.format("Period: " + period + ", Balance: " + balance);
}

public int getPeriod() {
    return period;
}

public void setPeriod(int period) {
    this.period = period;
}

public int getBalance() {
    return balance;
}

public void setBalance(int balance) {
    this.balance = balance;
}

public int getRate() {
    return rate;
}

public void setRate(int rate) {
    this.rate = rate;
}

public int getFbalance() {
    return fbalance;
}

public void setFbalance(int fbalance) {
    this.fbalance = fbalance;
}

public String getPrintstring() {
    return printstring;
}

public void setPrintString(String printstring) {
    this.printstring = printstring;
}

public void calculate() {
    for (int i = 0; i < period; i++) {
        fbalance = balance + balance * rate - monthlyFee;
    }

}

public void actionPerformed(ActionEvent e) {
    calculate();
}
}
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 5

首先,返回类型createAccountAccount,你String从它返回一个.它会在那里失败.

因此,将您的退货类型更改为String.并且还要确保您的方法始终返回value.您应该从代码可能遵循的每个路径返回一个值.或者,您可以return null;在方法的末尾添加a (但您还应该考虑前面的语句).

但同样,很难理解为什么string要从createAccount方法中返回a .事实上,你根本就没有在该方法中创建任何帐户.请重命名您的方法以反映其确切用途.

其次,在比较编译器错误时,您正在比较strings使用==运算符,这会给您带来问题.你应该使用equals方法比较字符串: -

if (input == "Checking")
Run Code Online (Sandbox Code Playgroud)

应该: -

if (input.equals("Checking"))
Run Code Online (Sandbox Code Playgroud)