1

私はJavaが初めてで、銀行の貯蓄と利息の計算機を作成しようとしています。基本的な計算機を作成しましたが、この計算機にいくつかの新しい機能を追加したところ、それを台無しにしてしまったようで、以前のように機能しなくなりました。

この計算機で達成しようとしていることがいくつかあります。 1. 口座の種類 (普通預金、CD、または当座預金) を選択し、JFrame を拡張する Account オブジェクトに渡します。

  1. 元の残高、利率、および期間の長さをユーザーに確認します。これらの値を Account オブジェクトに渡します (これは私が理解できない部分です)。

  2. 計算ボタンをクリックした後、最終残高を印刷します。

  3. ユーザーに「新しいアカウントを開設しますか? はい/いいえ」と尋ねます。「はい」の場合はループ バックします。いいえの場合は終了します。

Java の基本的な知識が不足しているため、現在行き詰まっています。どんな助けでも大歓迎です!

Account.java

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

public class Account extends JFrame {

private int period;
private int balance;
private int rate;
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 String getPrintstring() {
    return printstring;
}

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

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

}
}
}

Banker.java

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

public class Banker {

// Array for type of bank account

private static void createAndShowGUI() {

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

    // 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 3 Labels
    JLabel blabel = new JLabel("Period: " + period);
    JLabel plabel = new JLabel("Balance: " + balance);
    JLabel flabel = new JLabel("Final 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);
    frame.add(flabel);
    frame.pack();
    frame.setVisible(true);


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

public static void main(String[] args) {

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


    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
            createAndShowGUI();
        }



}
4

2 に答える 2

1

私はあなたに一般的なアドバイスしかありません...

floatあなたは Money を扱っています。and /orをデータ型として使用しないでくださいdouble

floatand型ではdouble、0.1 (またはその他の 10 の負の累乗) をfloatorとしてdouble正確に表現することはできません。

たとえば、1.03 ユーロを持っていて、0.42 を使ったとします。残りのお金はいくらですか?

System.out.println(1.03 - .42); 0.6100000000000001 を出力します。

この問題を解決する正しい方法は、BigDecimalをデータ型として使用することです。これには、add、divide などのすべてのメソッドがあります。落とし穴の 1 つBigDecimalは、不変であることです。計算を行うときは、そのことを忘れないでください。

于 2012-11-11T09:54:25.287 に答える
0

アカウントタイプの入力を求めるのと同じように、必要な値の入力を求めてキャプチャする必要があります。

String input = JOptionPane.showInputDialog("Question:");

これにより、数値に変換する必要のある文字列が得られます。

double value;
try {
  value = Double.parseDouble(input);
} catch (NumberFormatException e) {
  //Handle the exception
}

必要なすべての入力に対してこれを行うことができます。その後、それらをアカウントオブジェクトに渡します。

Account account = new Account();
account.setBalance(value);

そこからあなたのニーズを推定できることを願っています!幸運を。

于 2012-11-09T22:22:45.287 に答える