一、房贷简易计算器
- 这个案例是课本上的案例,主要的实现方法就是进行方法之间的调用,以及返回值的数据传递,难度不算大,但是也让我自己想了挺久,也是由两个类进行完成,一个数输出类,一个是功能类,下面看代码!
1、功能类Calculator2
public class Calculator2 {
public double Interest; //定义类变量 总利息
public double Repayment; //定义类变量 每月还款金额
public String Yea3(double m,int y){ //获取金额,存放年数
switch (y){
case 3: //如果客户输入的3年
Interest = m*0.0603; //3年总利息
this.Repayment = (m+Interest)/36; //计算每月还款
break;
case 5:
Interest = m*0.0612; //20年总利息
this.Repayment = (m+Interest)/60; //计算每月还款
break;
case 20:
Interest = m*0.0639; //5年总利息
this.Repayment = (m+Interest)/240; //计算每月还款
break;
}
return y+"年借款的每个月供为:"+this.Repayment+"元";
}
public Calculator2() {
System.out.println("请输入您的贷款金额:");
Scanner Jine = new Scanner(System.in);
double yonghu = Jine.nextDouble(); //获取用户输入的金额
System.out.println("----------------------------------------");
System.out.println("-------年限--------利率----------");
System.out.println("\t3年(36个月)\t\t6.03%\t\t");
System.out.println("\t5年(60个月)\t\t6.12%\t\t");
System.out.println("\t20年(240个月)\t6.39%\t\t");
System.out.println("请输入您的贷款年限(输入整数3、5、20):");
int yonghu2 = Jine.nextInt(); //获取用户输入的年限
String jie = Yea3(yonghu,yonghu2); //借款年限
System.out.println(jie);
}
}
这里主要总结一下:书本上的利率基本信息也都有了,主要是将用户输入的年份以及存款数额传递到功能的构造方法中,使用double以及int变量分别存储,然后里面switch控制流程就行计算,最终得出结果!
2、输出类CalculatorText
public class CalculatorText {
public static void main(String[] args) {
Calculator2 c2 = new Calculator2(); //直接输出无参构造方法!
}
}
这里主要是用来实例化对象,然后输出默认的无参构造方法,也就是用户输入信息的方法,那里面也完成了信息的输出,所以这里相当于一个前端的接口!
二、三角形判断
这里我就不做过多的详解了,使用的都是一些简单的判断语句!还是跟上面一样,使用了两个类来进行输出以及调用!
1、功能类Triangle
package com.actual.sexth;
import java.util.Scanner;
public class Triangle {
Scanner scanner = new Scanner(System.in);
public boolean Trian(int a,int b,int c) {
boolean flog = false; //默认为假,则不为三角形!
if ((a + b) < c || (a + c) < b || (b + c) < a) { //判断是否属于三角形
flog = false;
System.out.println("这不是三角形!");
} else {
flog = true;
if ((a * a) == ((b * b) + (c * c)) || (b * b) == ((a * a) + (c * c)) || (c * c) == ((a * a) + (b * b))) {
System.out.println("这个是直角三角形!");
}else if ((a * a)>((b * b) + (c * c)) || (b * b)>((a * a) + (c * c)) || (c * c)>((a * a) + (b * b))){
System.out.println("这是钝角三角形!");
}else {
System.out.println("这个是锐角三角形!");
}
}
System.out.println("是否继续?y/n");
String j = scanner.next(); //获取用户输入的整数
if (j.equals("y")){
return shuchu();
}else {
System.out.println("感谢使用!");
}
return flog;
}
public boolean shuchu () {
boolean a =false;
System.out.println("请输入第1条边:");
int i1 = scanner.nextInt(); //获取用户输入的整数
System.out.println("请输入第2条边:");
int i2 = scanner.nextInt(); //获取用户输入的整数
System.out.println("请输入第3条边:");
int i3 = scanner.nextInt(); //获取用户输入的整数
System.out.println(Trian(i1, i2, i3));
return a;
}
}
2、输出类
public class TriangleText {
//输出类
public static void main(String[] args) {
Triangle ti = new Triangle();
ti.shuchu();
}
}
方法跟房贷简易计算器的基础差不多,只是我更多使用到的就是判断语句,代码还可以进行很多优化的!可以自己再去研究一下!
三、重写
- 重写与重载,是有一定的区别的!这个千万不能搞混!
- 重写需要有继承关系。子类重写父类的方法!
- 方法名必须相同!
- 参数列表必须相同!
- 修饰符:范围可以扩大但是不能缩小!public - protected - default - rrivate
- 抛出的异常:范围,可以被缩小,但不能扩大!
- 重写,子类的方法和父类必要一致!方法体不同!
为什么要重写: 父类的功能,子类不一定需要,或者不一定满足!
代码示范一下!
父类
package com.actual.seventh;
//动物类
public class Animal {
private String color; //颜色
private String type; //类别
private int age; //年龄
private int weight; //体重
//将方法进行封装
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public void info() {
System.out.println("我是爸爸啊!");
}
}
子类鸟
package com.actual.seventh;
//鸟类
public class Bird extends Animal{
@Override
public String getColor() {
return super.getColor();
}
@Override
public void setColor(String color) {
super.setColor(color);
}
@Override
public String getType() {
return super.getType();
}
@Override
public void setType(String type) {
super.setType(type);
}
@Override
public int getAge() {
return super.getAge();
}
@Override
public void setAge(int age) {
super.setAge(age);
}
@Override
public int getWeight() {
return super.getWeight();
}
@Override
public void setWeight(int weight) {
super.setWeight(weight);
}
public void info(){ //重写父类的输出语句!
System.out.println("我是一只"+getColor()+getType()+"!");
System.out.println("我今年"+getAge()+"岁了!");
}
}
子类鱼
package com.actual.seventh;
//鱼类 继承后全部重写父类的方法!
public class Fish extends Animal{
@Override
public String getColor() {
return super.getColor();
}
@Override
public void setColor(String color) {
super.setColor(color);
}
@Override
public String getType() {
return super.getType();
}
@Override
public void setType(String type) {
super.setType(type);
}
@Override
public int getAge() {
return super.getAge();
}
@Override
public void setAge(int age) {
super.setAge(age);
}
@Override
public int getWeight() {
return super.getWeight();
}
@Override
public void setWeight(int weight) {
super.setWeight(weight);
}
public void info(){
System.out.println("我是一只"+getWeight()+"斤重的"+getType()+"!");
System.out.println("我今年"+getAge()+"岁了!");
}
}
输出类
package com.actual.seventh;
public class Apploct {
public static void main(String[] args) {
//父类引用指向子类对象,把鸟类的对象复制到父类Animal上面!
Animal animal = new Bird();
animal.setType("鸟");
animal.setAge(4);
animal.setColor("红色");
animal.info();
Animal fish = new Fish();
fish.setType("鱼");
fish.setAge(2);
fish.setColor("蓝色");
fish.setWeight(5);
fish.info();
}
}
重写其实很简单,主要是理解前面继承的关系即可!
注:文章仅做个人学习日记,不做学习建议,学习来源:狂神说