參考程式 Listing 2.1 p.49 ComputeArea.java
public class E01_ComputeArea {
public static void main(String[] args) {
double radius; // Declare radius
double area; // Declare area
// Assign a radius
radius = 20; // New value is radius
// Compute area
area = radius * radius * 3.14159;
// Display results
System.out.println("The area for the circle of radius " +
radius + " is " + area);
System.out.printf("半徑%.0f的圓的面積為%.2f\n", radius, area);
}
}
Table 2.1 p.51 Methods for Scanner Objects
參考程式 Listing 2.2 p.51 ComputeAreaWithConsoleInput.java
import java.util.Scanner; // Scanner is in the java.util package
public class E02_ComputeAreaWithConsoleInput {
public static void main(String[] args) {
// Create a Scanner object
Scanner input = new Scanner(System.in);
// Prompt the user to enter a radius
System.out.print("Enter a number for radius: ");
double radius = input.nextDouble();
// Compute area
double area = radius * radius * 3.14159;
// Display result
System.out.println("The area for the circle of radius " + radius
+ " is " + area);
System.out.printf("半徑%.0f的圓的面積為%.2f\n", radius, area);
}
}
顯示資料的差異
參考程式 Listing 2.3 p.51 ComputeAverage.java
import java.util.Scanner;
public class E03_ComputeAverage {
public static void main(String[] args) {
// Create a Scanner object
Scanner input = new Scanner(System.in);
// Prompt the user to enter three numbers
System.out.print("Enter three numbers: ");
double number1 = input.nextDouble();
double number2 = input.nextDouble();
double number3 = input.nextDouble();
// Compute average
double average = (number1 + number2 + number3) / 3;
// Display result
System.out.printf("三個數目 %f %f %f 的平均=%f\n", number1, number2, number3, average);
}
}
變數用來儲存「值」以供程式使用或改變
int count; // count 為整數變數 double radius; // radius為double浮點數 double interestRate; int year = 100; // 宣告並給予初值 int month; month = 9; // 分成兩個步驟 int day, weekday; // 一次宣告多個變數,用逗點分開,都是 int int hour=16, minute=30; // 一次宣告多個變數,並給予初值
int x; // Declare x to be an integer variable; double radius; // Declare radius to be a double variable; char a; // Declare a to be a character variable; x = 1; // Assign 1 to x; radius = 1.0; // Assign 1.0 to radius; a = 'A'; // Assign 'A' to a;
final datatype CONSTANTNAME = VALUE; final double PI = 3.14159; final int SIZE = 3;
Table 2.2 p.56 Numerical Data Types
參考程式 Listing 2.4 p.58DisplayTime.java
public class E04_DisplayTime {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int i = 123456789;
float f = 123456789; //float變數可以承接int值
double d = 123456789; // 浮點數Literal預設為 double
System.out.printf("i=%d\n", i);
System.out.printf("f=%f\n", f); // 7位數,有誤差
System.out.printf("d=%f\n", d);
int a = 5, b = 2;
double d2 = 2.0;
System.out.printf("a/b=%d\n",a/b); // 小數點後被捨去
System.out.printf("a/d2=%f\n",a/d2);
System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);
System.out.println(1.0 - 0.9);
// Prompt the user for input
System.out.print("Enter an integer for seconds: ");
int seconds = input.nextInt();
int minutes = seconds / 60; // Find minutes in seconds
int remainingSeconds = seconds % 60; // Seconds remaining
System.out.println(seconds + " seconds is " + minutes +
" minutes and " + remainingSeconds + " seconds");
}
}
int num = 5; long bignum = 123145534535L; // 整數Literal預設為 int int hexint = 0xA5B6; //16進位整數 int octint = 023; //8進位整數 double d = 23.4; float num = 2.0f; //f代表是float類型,預設為 double double exp = 1.23456E+2; // Scientific Notation
(3+4*x)/5 – 10*(y-5)*(a+b+c)/x + 9*(4/x + (9+x)/y)
參考程式 Listing 2.5 p.61 FahrenheitToCelsius.java
參考程式 Listing 2.6 p.62 ShowCurrentTime.java
import java.util.Date;
public class E06_ShowCurrentTime {
public static void main(String[] args) {
// Obtain the total milliseconds since midnight, Jan 1, 1970
long totalMilliseconds = System.currentTimeMillis();
// Obtain the total seconds since midnight, Jan 1, 1970
long totalSeconds = totalMilliseconds / 1000;
// Compute the current second in the minute in the hour
long currentSecond = (int)(totalSeconds % 60);
// Obtain the total minutes
long totalMinutes = totalSeconds / 60;
// Compute the current minute in the hour
long currentMinute = (int)(totalMinutes % 60);
// Obtain the total hours
long totalHours = totalMinutes / 60;
// Compute the current hour
long currentHour = (int)(totalHours % 24);
// Display results
System.out.println("Current time is " + currentHour + ":"
+ currentMinute + ":" + currentSecond + " GMT");
System.out.printf("%1$tY/%1$tm/%1$td %1$tH:%1$tM:%1$tS\n", totalMilliseconds);
Date now = new Date();
System.out.format("%1$tY/%1$tm/%1$td %1$tH:%1$tM:%1$tS\n", now);
System.out.printf("%1$tY/%1$tm/%1$td %1$tH:%1$tM:%1$tS\n", now);
}
}
Table 2.4 p.63 Shorthand Operators
結合指派,將等號左邊的變數,再放到等號右邊
a += b; a = a + b; a -= b; a = a - b int a=2, b=3; a -= b + 4; // a= ?
Table 2.5 p.64 Increment and Decrement Operators
public class E06A_IncDecrementOP {
public static void main(String[] args) {
int a = 1, b = 1;
System.out.printf("a++=%d\n", a++);
System.out.printf("--b=%d\n", --b);
System.out.printf("a=%d\n", a);
System.out.printf("b=%d\n", b);
// 先加
a = 1;
b = ++a;
System.out.printf("先加 a=%d, b=%d\n", a, b);
// 後加
a = 1;
b = a++;
System.out.printf("後加 a=%d, b=%d\n", a, b);
// 先減
a = 7;
b = --a;
System.out.printf("先減 a=%d, b=%d\n", a, b);
// 後減
a = 7;
b = a--;
System.out.printf("後減 a=%d, b=%d\n", a, b);
}
}
自動轉型:小到大 byte - short - int - long - float - double
強迫轉型:大到小 double - float - long - int - short - byte
參考程式 Listing 2.7 p.66 SalesTax.java
import java.util.Scanner;
public class E07_SalesTax {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter purchase amount: "); // 197.55
double purchaseAmount = input.nextDouble();
double tax = purchaseAmount * 0.06; // 11.853
// 小數點2位
System.out.println("Sales tax is " + (int)(tax * 100) / 100.0);
System.out.printf("Sales tax is %.2f\n", tax);
int a = 185;
double m = a / 100;
double m2 = (double) a / 100;
double m3 = a / 100.0;
System.out.println("m=" + m);
System.out.println("m2=" + m2);
System.out.println("m3=" + m3);
}
}
參考程式 Listing 2.8 p.67 ComputeLoan.java
public class E08_ComputeLoan {
public static void main(String[] args) {
// Create a Scanner
Scanner input = new Scanner(System.in);
// Enter yearly interest rate
System.out.print("Enter yearly interest rate (年利率), 例如 8.25: ");
double annualInterestRate = input.nextDouble();
// Obtain monthly interest rate
double monthlyInterestRate = annualInterestRate / 1200;
// Enter number of years
System.out.print(
"Enter number of years as an integer(貸款年數), 例如 5: ");
int numberOfYears = input.nextInt();
// Enter loan amount
System.out.print("Enter loan amount(貸款金額), 例如 120000.95: ");
double loanAmount = input.nextDouble();
// Calculate payment
double monthlyPayment = loanAmount * monthlyInterestRate / (1
- 1 / Math.pow(1 + monthlyInterestRate, numberOfYears * 12));
double totalPayment = monthlyPayment * numberOfYears * 12;
// Display results
System.out.println("The monthly payment(每月應付金額) is " +
(int)(monthlyPayment * 100) / 100.0);
System.out.println("The total payment(總共付款) is " +
(int)(totalPayment * 100) / 100.0);
}
}
char ch1 = 'J'; // 英文單引號 char ch2 = '考'; char ch3 = '\u8B49'; //unicode \u 之後4個16進位數字
參考程式 Listing 2.9 p.69 DisplayUnicode.java
JOptionPane 為 Swing 架構的對話方塊
import javax.swing.JOptionPane;
public class E09_DisplayUnicode {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,
"\u6B22\u8FCE \u03b1 \u03b2 \u03b3",
"\u6B22\u8FCE Welcome",
JOptionPane.INFORMATION_MESSAGE);
}
}
Table 2.6 p.70 (ppt 44)Java Escape Sequences
System.out.println("He said \"Java is Fun.\"\n");
public class E09A_CharOp {
public static void main(String[] args) {
char ch1 = 'A';
char uc1 = '\u0041';
char ch2 = '考';
int i1 = ch1;
int i2 = ch2;
char ch3 = '\u8B49'; // 8B49是16進位,相當於10進位的35657
System.out.printf("ch1=%c\n", ch1);
System.out.printf("uc1=%c\n", uc1);
System.out.printf("ch2=%c\n", ch2);
System.out.printf("i1=%d\n", i1);
System.out.printf("i2=%d\n", i2);
System.out.printf("ch3=%c\n", ch3);
char ch = (char) 0xAB0041;
System.out.printf("ch=%c\n", ch);
ch = (char) 65.25;
System.out.printf("ch=%c\n", ch);
int k = (int) 'A'; // unicode of A is assign to k
System.out.printf("k=%d\n", k); // k=65
int m = '2' + '3';
System.out.printf("m=%d\n", m); //
int n = 2 + 'a';
System.out.printf("n=%d\n", n); //
System.out.printf("n is unicode char %c\n", (char) n);
System.out.println("chapter " + '2'); //
}
}
參考程式 Listing 2.10 p.72 ComputeChange.java
public class E10_ComputeChange {
public static void main(String[] args) {
// Create a Scanner
Scanner input = new Scanner(System.in);
// Receive the amount
System.out.print(
"Enter an amount in double, for example 11.56: ");
double amount = input.nextDouble();
int remainingAmount = (int)(amount * 100);
// Find the number of one dollars
int numberOfOneDollars = remainingAmount / 100;
remainingAmount = remainingAmount % 100;
// Find the number of quarters in the remaining amount
int numberOfQuarters = remainingAmount / 25;
remainingAmount = remainingAmount % 25;
// Find the number of dimes in the remaining amount
int numberOfDimes = remainingAmount / 10;
remainingAmount = remainingAmount % 10;
// Find the number of nickels in the remaining amount
int numberOfNickels = remainingAmount / 5;
remainingAmount = remainingAmount % 5;
// Find the number of pennies in the remaining amount
int numberOfPennies = remainingAmount;
// Display results
String output = "Your amount " + amount + " consists of \n" +
"\t" + numberOfOneDollars + " dollars\n" +
"\t" + numberOfQuarters + " quarters\n" +
"\t" + numberOfDimes + " dimes\n" +
"\t" + numberOfNickels + " nickels\n" +
"\t" + numberOfPennies + " pennies";
System.out.println(output);
}
}
The String type is not a primitive type. It is known as a reference type , 第8章 物件與類別(Objects and Classes)會進一步解說
import java.util.Scanner;
public class E10A_StringOP {
public static void main(String[] args) {
String msg = "Welcome to Java";
String msg2 = "Welcome " + "to " + "Java";
System.out.printf("msg=%s\n", msg);
System.out.printf("msg2=%s\n", msg2);
String msg3 = "Chapter" + 2;
String msg4 = "Supplement" + 'B';
System.out.printf("msg3=%s\n", msg3);
System.out.printf("msg4=%s\n", msg4);
msg += " and Java is fun.";
System.out.printf("msg=%s\n", msg);
int a=3, b=5;
System.out.println("a + b =" + a + b);
System.out.println("a + b =" + (a + b));
Scanner sc = new Scanner(System.in);
System.out.print("請數入3個字串:");
String s1 = sc.next();
String s2 = sc.next();
String s3 = sc.next();
System.out.printf("s1=%s\n", s1);
System.out.printf("s2=%s\n", s2);
System.out.printf("s3=%s\n", s3);
System.out.print("請數入一行字:");
String s = sc.nextLine(); // 為何讀到空字串?
System.out.printf("s=%s\n", s);
}
}
變數(variables)與方法(methods)第1個字母小寫,例如 radius, area, showInputDialog
類別第1個字母大寫,例如 ComputeArea
常數使用全大寫字母,中間使用底線隔開,例如 MAX_VALUE
public class Test {
public static void main(String[] args) {
System.out.println("Block Styles 區塊的樣式");
}
}
public class Test
{
public static void main(String[] args)
{
System.out.println("Block Styles 區塊的樣式");
}
}
Figure 2.3 p.77 The compiler reports syntax errors
int intValue = Integer.parseInt(intString); double doubleValue =Double.parseDouble(doubleString);
參考程式 Listing 2.11 p.80 ComputeLoanUsingInputDialog.java
import javax.swing.JOptionPane;
public class E11_ComputeLoanUsingInputDialog {
public static void main(String[] args) {
// Enter yearly interest rate
String annualInterestRateString = JOptionPane.showInputDialog(
"Enter yearly interest rate, for example 8.25:");
// Convert string to double
double annualInterestRate =
Double.parseDouble(annualInterestRateString);
// Obtain monthly interest rate
double monthlyInterestRate = annualInterestRate / 1200;
// Enter number of years
String numberOfYearsString = JOptionPane.showInputDialog(
"Enter number of years as an integer, \nfor example 5:");
// Convert string to int
int numberOfYears = Integer.parseInt(numberOfYearsString);
// Enter loan amount
String loanString = JOptionPane.showInputDialog(
"Enter loan amount, for example 120000.95:");
// Convert string to double
double loanAmount = Double.parseDouble(loanString);
// Calculate payment
double monthlyPayment = loanAmount * monthlyInterestRate / (1
- 1 / Math.pow(1 + monthlyInterestRate, numberOfYears * 12));
double totalPayment = monthlyPayment * numberOfYears * 12;
// Format to keep two digits after the decimal point
monthlyPayment = (int)(monthlyPayment * 100) / 100.0;
totalPayment = (int)(totalPayment * 100) / 100.0;
// Display results
String output = "The monthly payment is " + monthlyPayment +
"\nThe total payment is " + totalPayment;
JOptionPane.showMessageDialog(null, output);
}
}