0

我正在尝试编写一个摊销计算器,用户可以在其中输入余额值、十进制形式的利率值和每月付款值。有了这些信息,我想输出以美元为单位的利息金额、本金金额和新余额。这是我的代码:

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));
   }
}
4

2 回答 2

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));
   }
}

这里的要点是扫描器是从输入流中读取的对象,而不是正在读取的值。对于要读取的每个值,您不需要新的扫描仪。

于 2016-09-29T21:54:24.770 回答
0

正如@nhouser9 所说,您不需要三个扫描仪并回答您的问题,编译器说变量未初始化,因为您只初始化它们中的最后一个(平衡)。java 中的多次初始化不会像您预期的那样起作用(用相同的值初始化所有变量)。

于 2016-09-29T23:00:42.630 回答