計算圓面積時,半徑小於0時,該如何處理?
public class EX00_CircleArea { public static void main(String[] args) { int radius = -3; if (radius < 0) { System.out.println("圓的半徑不能小於0"); } else { double area = radius * radius * Math.PI; System.out.printf("面積=%.2f", area); } } }
p.96 Table 3.1 Comparison Operations
參考 p.97 程式 Listing 3.1 AdditionQuiz.java
public class EX01_AdditionQuiz { public static void main(String[] args) { int number1 = (int) (System.currentTimeMillis() % 10); int number2 = (int) (System.currentTimeMillis() * 7 % 10); // Create a Scanner Scanner input = new Scanner(System.in); System.out.print("What is " + number1 + " + " + number2 + "? "); int answer = input.nextInt(); System.out.println(number1 + " + " + number2 + " = " + answer + " is " + (number1 + number2 == answer)); } }
3-6 有 Two-Way if Statements
if (boolean-expression) { // 可以計算(評估)的boolean運算式,可以是true, false statement(s); // 若為true, 則執行這些敘述(statement) }
參考 p.99 程式 Listing 3.2 SimpleIfDemo.java
public class EX02_SimpleIfDemo { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter an integer: "); int number = input.nextInt(); // test input 12, 15, 11, 30 if (number % 5 == 0) System.out.println("HiFive"); if (number % 2 == 0) System.out.println("HiEven"); } }
參考 p.100 程式 Listing 3.3 GuessBirthday.java
if (boolean-expression) { // 可以計算(評估)的boolean運算式,可以是true, false statement(s)-for-true; // 若為true, 則執行這些敘述(statement) } else { statement(s)-for-false; // 若為false, 則執行這些敘述(statement) }
public class EX03A_EvenOdd { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("請數入一個整數:"); int num = input.nextInt(); if (num % 2 == 0) { System.out.printf("%d 是偶數\n", num); } else { System.out.printf("%d 是偶數\n", num); } } }
p.104 Figure 3.4 A preferred format for multiple alternative if statements is shown in (b)
參考 p.105 Error 1, 2, 3, 4
參考 p.107 程式 Listing 3.4 SubtractionQuiz.java
參考 p.108 程式 Listing 3.5 ComputeBMI.java
public class EX05_ComputeBMI { public static void main(String[] args) { Scanner input = new Scanner(System.in); // Prompt the user to enter weight in pounds System.out.print("Enter weight in pounds: "); double weight = input.nextDouble(); // Prompt the user to enter height in inches System.out.print("Enter height in inches: "); double height = input.nextDouble(); final double KILOGRAMS_PER_POUND = 0.45359237; // Constant final double METERS_PER_INCH = 0.0254; // Constant // Compute BMI double weightInKilogram = weight * KILOGRAMS_PER_POUND; double heightInMeters = height * METERS_PER_INCH; double bmi = weightInKilogram / (heightInMeters * heightInMeters); // Display result System.out.printf("Your BMI is %5.2f\n", bmi); if (bmi < 16) System.out.println("You are seriously underweight"); else if (bmi < 18) System.out.println("You are underweight"); else if (bmi < 24) System.out.println("You are normal weight"); else if (bmi < 29) System.out.println("You are overweight"); else if (bmi < 35) System.out.println("You are seriously overweight"); else System.out.println("You are gravely overweight"); } }
參考 p.110 程式 Listing 3.6 ComputeTax.java
p.112 Table 3.3 Boolean Operators
p.112 Table 3.4 Truth Table for Operator !
p.112 Table 3.5 Truth Table for Operator &&
p.113 Table 3.6 Truth Table for Operator ||
p.113 Table 3.7 Truth Table for Operator ^
參考 p.113 程式 Listing 3.7 TestBooleanOperators.java
public class EX07_TestBooleanOperators { public static void main(String[] args) { // Create a Scanner Scanner input = new Scanner(System.in); // Receive an input System.out.print("Enter an integer: "); int number = input.nextInt(); System.out.println("Is " + number + " divisible by 2 and 3? " + ((number % 2 == 0) && (number % 3 == 0))); System.out.println("Is " + number + " divisible by 2 or 3? " + ((number % 2 == 0) || (number % 3 == 0))); System.out.println("Is " + number + " divisible by 2 or 3, but not both? " + ((number % 2 == 0) ^ (number % 3 == 0))); } }
public class E07A_LogicOP { public static void main(String[] args){ // short-circuit 與 side effect int score = 53, miss=3; boolean pass; pass = score >= 60 && miss++ < 5; // short-cut System.out.printf("&& pass=%b, miss=%d\n", pass, miss); score=53; miss=3; pass = score >= 60 & miss++ < 5; System.out.printf("& pass=%b, miss=%d\n", pass, miss); // And int money = 30000; //現金 int day = 7; //假期天數 System.out.print("澳洲團成行:"); System.out.println(money>=40000 && day>=7); // Or boolean isDiesel = true; int cc = 1800; //排氣量 System.out.print("購買汽車:"); System.out.println(isDiesel || cc<=1500); // Xor boolean MassageChair = true; //送按摩椅 boolean skylight = true; //送天窗 System.out.print("成交:"); System.out.println(MassageChair ^ skylight); // Not int age = 16; //年齡 System.out.print("未滿18歲:"); System.out.println(!(age>=18)); } }
p.114 Caution and Note
// error 1 <= Num <= 31 // ok (1 <= Num) && (Num <= 31)
參考 p.115 程式 Listing 3.8 LeapYear.java
public class E08_LeapYear { public static void main(String args[]) { // Create a Scanner Scanner input = new Scanner(System.in); System.out.print("Enter a year: "); int year = input.nextInt(); // Check if the year is a leap year boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); // Display the result in a message dialog box System.out.println(year + " is a leap year? " + isLeapYear); } }
參考 p.115 程式 Listing 3.8 Lottery.java
import java.util.Scanner; public class EX09_Lottery { public static void main(String[] args) { // Generate a lottery int lottery = (int) (Math.random() * 100); // Prompt the user to enter a guess Scanner input = new Scanner(System.in); System.out.printf("magic number = %d\n", lottery); System.out.print("Enter your lottery pick (two digits): "); int guess = input.nextInt(); // Get digits from lottery int lotteryDigit1 = lottery / 10; int lotteryDigit2 = lottery % 10; // Get digits from guess int guessDigit1 = guess / 10; int guessDigit2 = guess % 10; System.out.println("The lottery number is " + lottery); // Check the guess if (guess == lottery) System.out.println("Exact match: you win $10,000"); else if (guessDigit2 == lotteryDigit1 && guessDigit1 == lotteryDigit2) System.out.println("Match all digits: you win $3,000"); else if (guessDigit1 == lotteryDigit1 || guessDigit1 == lotteryDigit2 || guessDigit2 == lotteryDigit1 || guessDigit2 == lotteryDigit2) System.out.println("Match one digit: you win $1,000"); else System.out.println("Sorry, no match"); } }
switch (switch-expression) { // char, byte, short, int case value1: statement(s)1; break; case value2: statement(s)2; break; ... case valueN: statement(s)N; break; ... default: statement(s)-for-default; }
public class EX09A_Switch { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("請輸入月份: "); int month = input.nextInt(); int days; switch (month) { case 1: days = 31; System.out.printf("month=%d, days=%d\n", month, days); break; case 4: days = 30; System.out.printf("month=%d, days=%d\n", month, days); break; default: days = 0; System.out.printf("month=%d, days=%d\n", month, days); } } }
int max, num1=1, num2=2; // following statement if (num1 > num2) { max = num1; } else { max = num2; } // equal max = (num1 > num2) ? num1 : num2;
Dispaly only two digits after the decimal point in a floating-point value
double x = 2.0 / 3; System.out.println("x=" + (int) (x * 100) / 100.0); // or System.out.printf("x=%.2f\n",x);
p.120 Table 3.8 Frequently Used Specifiers
p.120 Table 3.9 Examples of Specifying Width and Precision
p.121 Caution and Tips and 圖形解說
p.122 Table 3.10 Operator Precedence Chart
或課本 p 736, 附錄C
參考 p.123 程式 Listing 3.10 GuessBirthdayUsingConfirmationDialog.java