Решение: Добавить loanDate = new java.util.Date(); классу contructor.Решено: Java NullPointerException с классом в заявлении Printf
Точка исключение показывает на линии 27
Снимок экрана CMD распечатки (Заявление PRINTF в нижней части.): http://imgur.com/u7fiMR2
import java.util.Scanner;
public class TestLoanClass {
// Main method
public static void main(String[] args) {
// Create a scanner
Scanner input = new Scanner(System.in);
// Enter annual interest rate
System.out.print(
"Enter annual interest rate, for example, 8.25: ");
double annualInterestRate = input.nextDouble();
// Enter number of years
System.out.print("Enter number of years as an integer: ");
int numberOfYears = input.nextInt();
// Enter loan amount
System.out.print("Enter loan amount, for example, 120000.95: ");
double loanAmount = input.nextDouble();
// Create loan object
Loan loan =
new Loan(annualInterestRate, numberOfYears, loanAmount);
// Display loan date, monthly payment, and total payment
System.out.printf("The loan was created on %s\n" +
"The monthly payment is %.2f\nThe total payment is %.2f\n",
loan.getLoanDate().toString(), loan.getMonthlyPayment(),
loan.getTotalPayment());
}
}
Я не уверен, что это ссылка. Ниже приведен класс, если он вам нужен. Заранее спасибо.
класс займа:
public class Loan {
private double annualInterestRate;
private int numberOfYears;
private double loanAmount;
private java.util.Date loanDate;
// Default constructor
public Loan() {
this(2.4,1,1000);
}
/* Construct a loan with specified annual interest rate,
number of years, and loan amount. */
public Loan(double annualInterestRate, int numberOfYears,
double loanAmount) {
this.annualInterestRate = annualInterestRate;
this.numberOfYears = numberOfYears;
this.loanAmount = loanAmount;
}
// Return annualInterestRate
public double getAnnualInterestRate() {
return annualInterestRate;
}
// Set a new annualInterestRate
public void setAnnualInterestRate() {
this.annualInterestRate = annualInterestRate;
}
// Return numberOfYears
public int getNumberOfYears() {
return numberOfYears;
}
// Set a new numberOfYears
public void setNumberfOfYears() {
this.numberOfYears = numberOfYears;
}
// Return loanAmount
public double getLoanAmount() {
return loanAmount;
}
// Set a new loanAmount
public void setLoanAmount() {
this.loanAmount = loanAmount;
}
// Find monthly payment
public double getMonthlyPayment() {
double monthlyInterestRate = annualInterestRate/1200;
double monthlyPayment = loanAmount * monthlyInterestRate/(1 -
(1/Math.pow(1 + monthlyInterestRate, numberOfYears * 12)));
return monthlyPayment;
}
// Find total payment
public double getTotalPayment() {
double totalPayment = getMonthlyPayment() * numberOfYears * 12;
return totalPayment;
}
// Return loan date
public java.util.Date getLoanDate() {
return loanDate;
}
}
Показать класс 'Loan'. –
Вы должны показать нам класс 'Loan', определенно. Я предполагаю, что ваш конструктор фактически не устанавливает все. Также обратите внимание, что вы не должны использовать 'double' для финансовых значений - используйте' BigDecimal' или целое число центов/пенни/что угодно. –
loan.getLoanDate(), вероятно, возвращает null. – BevynQ