2016-09-29 7 views
0

ユーザが残高の値を入力できる償却計算機をプログラムしようとしています。毎月の支払い額。この情報で、私はドル、元本、および新しい残高で金利を出力したいと思います。ここに私のコードです:Javaコンパイラが変数「interest」または「pmt」を開始していないことを伝えています

import java.util.Scanner; 
public class Amortization{ 
    public static void main(String []args){ 
     Scanner pmt, interest, balance = new Scanner(System.in); 
     System.out.println("What is your balance?"); 
     double b = balance.nextDouble(); 
     System.out.println("What is your interest rate in decimal?"); 
     double i = interest.nextDouble(); 
     System.out.println("What is your monthly payment?"); 
     double p = pmt.nextDouble(); 
     double pv = p-(b*i); 
     System.out.println("Your interest amount is " + (b*i)); 
     System.out.println("Your principal amount is " + pv); 
     System.out.println("Your new balance is " + (b-pv)); 
    } 
} 
+2

すべての入力に対して 'System.in'から読み込みたい場合は、なぜ3つのスキャナを最初に定義しようとしていますか? – azurefrog

+0

1つのスキャナを定義し、それから目的の変数に3回読み取ることができます。 –

答えて

1

標準入力から読み取るように3つのスキャナを宣言しないでください。一つを宣言し、それから読み続ける。

import java.util.Scanner; 
public class Amortization{ 
    public static void main(String []args){ 
     Scanner input = new Scanner(System.in); 
     System.out.println("What is your balance?"); 
     double b = input.nextDouble(); 
     System.out.println("What is your interest rate in decimal?"); 
     double i = input.nextDouble(); 
     System.out.println("What is your monthly payment?"); 
     double p = input.nextDouble(); 
     double pv = p-(b*i); 
     System.out.println("Your interest amount is " + (b*i)); 
     System.out.println("Your principal amount is " + pv); 
     System.out.println("Your new balance is " + (b-pv)); 
    } 
} 

ここでの主なポイントは、読み込み中の値ではなく、入力ストリームから読み取るオブジェクトであることです。あなたが読むすべての値に対して新しいスキャナは必要ありません。

0

@ nhouser9によると、3つのスキャナは必要なく、最後のもの(バランス)を初期化しているだけなので、変数は初期化されていないというコンパイラの質問に答えます。 javaでの複数の初期化は、期待通りに機能しません(同じ値を持つすべての変数を初期化します)。

関連する問題