2016-09-29 107 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個掃描儀從標準輸入讀取。宣佈一個,並繼續閱讀它。像這樣:

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說,你不需要三個掃描儀和回答你的問題編譯器說變量沒有初始化,因爲你只是初始化它們的最後一個(平衡)。在java中的多重初始化不會像你期望的那樣工作(初始化所有具有相同值的變量)。

相關問題