- make mathods
- 主main函数,通常有5-10行代码,当代码过多时应重构,将部分内容放入不同的方法中
重构:找概念,找重复的内容
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
final byte percent = 100;
int principal = (int) read("Principal: ", 1000,100000);
float annual_rate = (float) read("Annual_rate: ",1,30);
byte period = (byte) read("Period (Year): ",1,30);
double res = calculateMorgage(principal,annual_rate,period);
System.out.println("morgage: " + res);
}
public static double calculateMorgage(
int principal,
float annual_rate,
byte period) {
final byte month = 12;
final byte percent = 100;
float rate_month = annual_rate / month / percent;
double res = principal * (rate_month * (Math.pow(1 + rate_month, period * month)) / (Math.pow(1 + rate_month, period * month) - 1));
return res;
}
public static double read(String prompt,double min, double max){
Scanner scanner = new Scanner(System.in);
double value;
while (true) {
System.out.print(prompt);
value = scanner.nextFloat();
if (value >= min && value <= max)
break;
System.out.println("enter a number between"+ min + "and" + max);
}
return value;
}
}
package com.company;
import org.w3c.dom.ls.LSInput;
import java.awt.*;
import java.text.ChoiceFormat;
import java.text.NumberFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
import java.util.Scanner;
public class Main {
final static byte month = 12;
final static byte percent = 100;
public static void main(String[] args) {
final byte percent = 100;
int principal = (int) read("Principal: ", 1000,100000);
float annual_rate = (float) read("Annual_rate: ",1,30);
byte period = (byte) read("Period (Year): ",1,30);
double res = calculateMorgage(principal,annual_rate,period);
String mortgageFormatted = NumberFormat.getCurrencyInstance().format(res);
System.out.println("mortgage: " + res);
for (short m =1;m= min && value <= max)
break;
System.out.println("enter a number between"+ min + "and" + max);
}
return value;
}
}



