package com.Shayne;
public class Main {
//Mortgage Caculator
public static void main(String[] args) {
greetUser("Shayne", "Chen");
}
public static void greetUser(String firstName, String lastName){
System.out.println("Hello " + firstName + " " + lastName);
}
}
package com.Shayne;
public class Main {
//Mortgage Caculator
public static void main(String[] args) {
String message = greetUser("Shayne", "Chen");
System.out.println(message);
}
public static String greetUser(String firstName, String lastName){
return "Hello " + firstName + " " + lastName;
}
}
加强版MortgageCalculator
package com.Shayne;
import java.text.NumberFormat;
import java.util.Locale;
import java.util.Scanner;
public class Main {
//Mortgage Caculator
final static byte MONTHS_IN_YEAR = 12;
final static byte PERCENT = 100;
public static void main(String[] args) {
int principal = (int) readNumber("Principal: ", 1000, 1_000_000);
float annualInterest = (float)readNumber("Annual Interest Rate: ", 1, 30);
byte years = (byte) readNumber("period (Years): ", 1, 30);
printMortgage(principal, annualInterest, years);
printPaymentSchedule(principal, annualInterest, years);
}
private static void printPaymentSchedule(int principal, float annualInterest, byte years) {
System.out.println("nPAYMENT SCHEDULEn----------------");
for (int month = 1; month <= years * MONTHS_IN_YEAR; month++){
String balance = NumberFormat.getCurrencyInstance(Locale.US).format(calculateBalance(years, principal, annualInterest, month));
System.out.println(balance);
}
}
private static void printMortgage(int principal, float annualInterest, byte years) {
String mortgage = NumberFormat.getCurrencyInstance(Locale.US).format(calculateMortgage(principal, annualInterest, years));
System.out.println("nMORTGAGEn--------");
System.out.println("Monthly Patments: " + mortgage);
}
public static double readNumber(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 value between" + min + " and " + max);
}
return value;
}
public static double calculateMortgage(
int principal,
float annualInterest,
byte years) {
float monthlyInterest = annualInterest / PERCENT / MONTHS_IN_YEAR;
short numberOfPayments = (short) (years * MONTHS_IN_YEAR);
double mortgage = (principal * monthlyInterest * Math.pow(1 + monthlyInterest, numberOfPayments)) / (Math.pow(1 + monthlyInterest, numberOfPayments) - 1);
return mortgage;
}
public static double calculateBalance(byte years, int principal, float annualInterest, int numberOfPaymentMade) {
float monthlyInterest = annualInterest / PERCENT / MONTHS_IN_YEAR;
short numberOfPayments = (short) (years * MONTHS_IN_YEAR);
double balance = principal
* (Math.pow(1 + monthlyInterest, numberOfPayments) - Math.pow(1 + monthlyInterest, numberOfPaymentMade))
/ (Math.pow(1 + monthlyInterest, numberOfPayments) - 1);
return balance;
}
}
类和对象
package com.Shayne;
public class Main {
public static void main(String[] args) {
var textBox1 = new TextBox();
textBox1.setText("Box 1");
System.out.println(textBox1.text.toUpperCase());
var textBox2 = new TextBox();
textBox2.setText("Box 2");
System.out.println(textBox2.text);
}
}
package com.Shayne;
public class TextBox {
public String text = ""; //Field
public void setText(String text) {
this.text = text;
}
public void clear() {
text = "";
}
}
package com.Shayne;
public class Main {
public static void main(String[] args) {
var textBox1 = new TextBox();
var textBox2 = textBox1;
textBox2.setText("Hello World");
System.out.println(textBox1.text);
}
}
package com.Shayne;
public class Main {
public static void main(String[] args) {
var textBox1 = new TextBox();
var textBox2 = textBox1;
textBox2.setText("Hello World");
System.out.println(textBox1.text);
}
}
Encapsulation
procedural Programming
package com.Shayne;
public class Main {
public static void main(String[] args) {
int baseSalary = 50_000;
int extraHours = 10;
int hourlyRate = 20;
int wage = calcilateWage(baseSalary, extraHours, hourlyRate);
System.out.println(wage);
}
public static int calcilateWage(
int baseSalary,
int extraHours,
int hourlyRate
) {
return baseSalary + (extraHours * hourlyRate);
}
}
encapsulation
package com.Shayne;
public class Main {
public static void main(String[] args) {
var employee = new Employee();
employee.baseSalary = 50_000;
employee.hourlyRate = 20;
int wage = employee.calculateWage(10);
System.out.println(wage);
}
}
package com.Shayne;
public class Employee {
public int baseSalary;
public int hourlyRate;
public int calculateWage(int extraHours) {
return baseSalary + (hourlyRate * extraHours);
}
}
Getters and Setters
package com.Shayne;
public class Main {
public static void main(String[] args) {
var employee = new Employee();
employee.setbaseSalary(50_000);
employee.setHourlyRate(20);
int wage = employee.calculateWage(10);
System.out.println(wage);
}
}
package com.Shayne;
public class Employee {
private int baseSalary;
private int hourlyRate;
public int calculateWage(int extraHours) {
return baseSalary + (getHourlyRate() * extraHours);
}
public void setbaseSalary(int baseSalary) {
if (baseSalary <= 0)
throw new IllegalArgumentException("Salary cannot be 0 or less.");
this.baseSalary = baseSalary;
}
public int getbaseSalary() {
return baseSalary;
}
public int getHourlyRate() {
return hourlyRate;
}
public void setHourlyRate(int hourlyRate) {
if (hourlyRate <= 0)
throw new IllegalArgumentException("Hourly rate cannot be 0 or negative.");
this.hourlyRate = hourlyRate;
}
}
static members
package com.Shayne;
public class Main {
public static void main(String[] args) {
var employee = new Employee(50_000, 20);
Employee.printNumberOfEmployees();
int wage = employee.calculateWage();
System.out.println(wage);
}
}
package com.Shayne;
public class Employee {
private int baseSalary;
private int hourlyRate;
public static int numberOfEmployees;
public Employee(int baseSalary) {
this(baseSalary, 0);
}
public Employee(int baseSalary, int hourlyRate) {
setbaseSalary(baseSalary);
setHourlyRate(hourlyRate);
numberOfEmployees++;
}
public static void printNumberOfEmployees() {
System.out.println(numberOfEmployees);
}
public int calculateWage(int extraHours) {
return baseSalary + (getHourlyRate() * extraHours);
}
public int calculateWage() {
return calculateWage(0);
}
private void setbaseSalary(int baseSalary) {
if (baseSalary <= 0)
throw new IllegalArgumentException("Salary cannot be 0 or less.");
this.baseSalary = baseSalary;
}
private int getbaseSalary() {
return baseSalary;
}
private int getHourlyRate() {
return hourlyRate;
}
private void setHourlyRate(int hourlyRate) {
if (hourlyRate < 0)
throw new IllegalArgumentException("Hourly rate cannot be 0 or negative.");
this.hourlyRate = hourlyRate;
}
}



