面向对象的两个例子Loan和BMI问题

问题不重要,重要的是通过代码体会什么是面向对象!!!以及面向对象怎么写才不会报错!!!

这是一个贷款问题也就是输入利率贷款额啊等得出还款。

import  java.util.Scanner;
public class TestLoanClass {                   

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner input = new Scanner(System.in);
		
		System.out.print("Enter yearly interest rate ,for example, 8.25 ");
		
		double annualInterestRate = input.nextDouble();
		
		System.out.print("Enter number of years as an integere: ");
		
		int numberOfYears = input.nextInt();
		
		System.out.print("Enter loan amount ,for example , 1200000.95:");
		
		double loanAmount = input.nextDouble();
		
		Loan loan = new Loan (annualInterestRate,numberOfYears,loanAmount);
		
		System.out.printf("The loan was created on %s\n"
		+"The monthly payment is %.2f\n The toal payment is %.2f\n",
		loan.getLoanDate().toString(),loan.getMonthlyPayment(),loan.getTotalPayment());
	}
		

	
	
static class Loan{                //不声明成静态的类上面new Loan对象的时候回报错,main()和class Loan之外创建一个外部实例,再在main()里面通过外部实例去实例化对象
		private double annualInterestRate;
		private int numberOfYears;
		private double loanAmount;
		private java.util.Date loanDate;
		
		public Loan() {
			this(2.5,1,1000);
		}
		
		public Loan (double annualInterestRate ,int numberOfYears,double loanAmount) {
			this.annualInterestRate = annualInterestRate;
			this.numberOfYears = numberOfYears;
			this.loanAmount = loanAmount;
			loanDate = new java.util.Date();
		}
		
		public double getAnnualInterestRate() {
			return annualInterestRate;
			
		}
		
		public void setAnnualInterestRate(double annaulInterestRate) {
			this.annualInterestRate = annualInterestRate;
		}
		
		public int getNumberOfYears() {
			return numberOfYears;
		}
		
		public void setNumberOfYears(int numberOfYears) {
			this.numberOfYears = numberOfYears;
		}
		
		public double getLoanAmount() {
			return loanAmount;
		}
		public void setLoanAmount(double LoanAmount) {
			this.loanAmount = loanAmount;
		}
		
		public double getMonthlyPayment() {
			double monthlyInterestRate = annualInterestRate / 1200;
			double monthlyPayment = loanAmount * monthlyInterestRate / (1-
					(Math.pow(1/(1+monthlyInterestRate), numberOfYears*12)));
			return monthlyPayment;
			
		}
		public double getTotalPayment() {
			double totalPayment = getMonthlyPayment()*numberOfYears*12;
			return totalPayment;
		}
		
		public java.util.Date getLoanDate(){
			return loanDate;
		}

	}
	

}

这是一个输入身高等信息评价你体重是否正常的程序
public class UseBMIClass {

public static void main(String[] args) {
	// TODO 自动生成的方法存根
	BMI bmi1 = new BMI ("John Doe",18,145,70);
	System.out.println("The BMI for "+bmi1.getName()+" is "+bmi1.getBMI()+" "+bmi1.getStatus());
	
	BMI bmi2 = new BMI ("Peter King",215,70);
	System.out.println("The BMI for "+bmi2.getName()+" is " +bmi2.getBMI()+" "+bmi2.getStatus());

}

static class BMI{
	private String name;
	private int age;
	private double weight;
	private double height;
	public static final double KILOGRAMS_PER_POUND = 0.45359237;
	public static final double METERS_PER_INCH = 0.0254;
	
	public BMI(String name,int age, double weight,double height) {
		this.name = name;
		this.age = age;
		this.weight = weight;
		this.height = height;
		
	}
	public BMI(String name,double weight,double height) {   //这是一个重载方法,如果只输入三个参数,就像bmi2一样,那么age默认为20
		this(name,20,weight,height);	
	}
	public double getBMI() {
		double bmi = weight * KILOGRAMS_PER_POUND/
				((height*METERS_PER_INCH)*(height*METERS_PER_INCH));
		return Math.round(bmi*100)/100.0;
		
		
	}
	public String getStatus() {
		double bmi = getBMI();
		if(bmi<16)
			return "Seriously underweight";
		else if(bmi<18)
			return "underweight";
		else if(bmi<24)
			return "normal weight";
		else if(bmi<29)
			return "overweight";
		else if(bmi<35)
			return "seriously overweight";
		else
			return "gravely overweight";
		
	}
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
		
	}
	public double getWeight() {
		return weight;
	}
	public double getHeight() {
		return height;
	}
	
}

}


/*创建了两个对象,bmi1 和bmi2,创建的同时输入他们的参数,包括姓名,年龄,身高,体重。
 * 然后再调用BMI里面的方法,把对象的值传过去,同时BMI里面的方法进行计算返回结果到main*/
 
为什么我的第二个代码片是这样的???呼叫小管家。

猜你喜欢

转载自blog.csdn.net/alike_meng/article/details/82945280