0

次のプログラムは、数式 i = p*r*t を指定して単利を計算することを目的としています。ユーザー入力を指定し、それを独自のメソッド (Must) に入れます。ただし、実行すると、「ハンドルされていない例外タイプ IOException. ..」 以前に try catch ブロックを実装しようとしましたが、エラーがさらに発生しました

import java.io.*;

public class cInterest {

    public static void main(String[] args) throws IOException {

    }

    public static double balance(double principal, double rate, double years) {

        double amount = 0;

        String input;
        BufferedReader myInput = new BufferedReader(new InputStreamReader(
                System.in));

        System.out.print("How much would you like to take out? ");
        input = myInput.readLine();
        principal = Double.parseDouble(input);

        System.out.print("Enter the interest rate: ");
        input = myInput.readLine();
        rate = Double.parseDouble(input);

        for (int i = 1; i < years; i++) {
            amount = principal * rate * years;
            amount += principal;
        }
        return amount; // - principal;

    }
}
4

3 に答える 3

0

ただし、実行すると、「処理されていない例外タイプIOException...」というエラーが発生します。

プログラムの実行時に例外は発生しませんが(実際には、main()メソッドはまだ空であるため、何も実行されません)、コンパイラーはコードのコンパイル時にこのエラーを出します。

例外をキャッチするか、メソッドに例外を渡させる必要があります。

public static double balance(double principal, double rate, double years) throws IOException { ... }

背景には、スローするmyInput.readLine(); 可能性があります。これは、上記のように呼び出し元のメソッドに渡すか、 :IOExceptionで処理する必要があります。try{}-catch()-block

try {
    input = myInput.readLine();
} catch(IOException ioex) {
    ioex.printStackTrace();
    // ... additional code to handle the exception properly
}

また、main()スロー例外が発生しないようにする必要があります。上記から最初のアプローチを選択し、バランスでスローするIOException場合は、最新のメインメソッドで処理してください。balance次のコードスニペットは、メソッドを呼び出す方法も示しています。

public static void main(String[] args) {
    try {
        balance(1, 2, 3);
    } catch(IOException ioex) {
        ioex.printStackTrace();
        // ... additional code to handle the exception properly
    }
}

レッスン:例外も参照してください。

于 2013-03-07T14:10:31.400 に答える
0
myInput.readLine(); can throw `IOException` so you **must** handle it somewhere.

使用する:

try {
    myInput.readLine();
} catch (IOException e){
    e.printStackTrace();
}

そして、他の問題を解決してみてください。また、メソッドthrowsから宣言を削除します。main

于 2013-03-07T14:11:00.513 に答える
0

最も簡単な修正は、メソッドがスローすることを宣言することです(そして、そこから呼び出す場合はIOException、メソッドに対してもこれを行う必要があります)。mainbalance

public static double balance(double principal, double rate, double years) throws IOException {

public static void main(String[] args) throws IOException {

代わりにスキャナーを使用してみてくださいInputStreamReader-この種のものには少し使いやすいです

Scanner sc = new Scanner(System.in);

mainコードを実行するには、次のメソッドからコードを呼び出す必要があります。

public static void main(String[] args) throws IOException {
    balance(0, 0, 0);
}     
于 2013-03-07T14:11:03.250 に答える