復習題
2.1 指出并修改以下代碼中的錯誤:
public class Test {
public void main(string[] args) {
double i = 50.0;
double k = i + 50.0;
double j = k + 1;
System.out.println("j is " + j + " and
k is " + k);
}
}
缺少關鍵字 static,String首字符應該大寫,雙引號字符串無法在代碼中換行。修正如下:
public class Test {
public static void main(String[] args) {
double i = 50.0;
double k = i + 50.0;
double j = k + 1;
System.out.println("j is " + j + " and k is " + k);
}
}
2.2 如何編寫一條語句,讓那個用戶從鍵盤輸入一個雙精度值?在執行下面代碼的時候,如果你輸入5a,將發生什么?
double radius = input.nextDouble();
Scanner input = new Scanner(System.in)
double d = input.nextDouble()
輸入5a將報錯,類型有誤
2.3 下面兩個import語句之間有什么執行的不同嗎?
import java.util.Scanner;
import java.util.*;
前者只單獨引入了java.util下面的Scanner類。
后者將java.util下的所有類都進行了引入。
2.4 以下標識符哪些是合法的?哪些是Java的關鍵字?
miles(合法), Test(合法), a++(不合法), --a(不合法), 4#R(不合法), $4(合法), #44(不合法), apps(合法)
class(關鍵字), public (關鍵字),int(關鍵字), x(合法), y(合法), radius(合法)
2.5 請指出并修改下面代碼中的錯誤:
public class Test {
public static void main(String[] args) {
int i = k + 2;
System.out.println(i);
}
}
k沒有進行聲明,沒有初始值,修正如下
public class Test {
public static void main(String[] args) {
int k = 1;
int i = k + 2;
System.out.println(i);
}
}
2.6 請指出并修改下面代碼中的錯誤:
public class Test {
public static void main(String[] args) {
int i = j = k = 2;
System.out.println(i + " " + j + " " + k);
}
}
j和k沒有進行聲明,修正如下:
public class Test {
public static void main(String[] args) {
int i , j , k;
i = j = k = 2;
System.out.println(i + " " + j + " " + k);
}
}
2.7 使用常量的好處是什么?聲明一個int類型的常量SIZE,并且值為20。
好處如下:
- 不必重復輸入同一個值
- 如果必須修改常量值,只需在源代碼中的一個地方做改動
- 給常量賦一個描述性名字會提高程序易讀性
final int SIZE = 20;
2.8 類名、方法名、常量和變量的命名習慣是什么?按照Java的命名習慣,以下哪些項可以作為常量、方法、變量或者一個類?
MAX_VALUE(常量), Test(類), read(變量), readDouble(方法)
2.9 將以下算法翻譯成Java代碼。
第一步:聲明一個雙精度型變量miles,初始值為100.
第二步:聲明一個雙精度型常量KILOMETERS_PER_MILE,初始值為1.609。
第三步:聲明一個雙精度型變量kilometers,將miles和KILOMETERS_PER_MILE相乘,并且將結果賦值給kilometers。
第四步:在控制臺顯示kilometers。
在第四步之后,kilometers是多少?
public class ComputeAreaWithConstant {
public static void main(String[] args) {
double miles = 100.0;
final double KILOMETERS_PER_MILE = 1.609;
double kilometers = miles * KILOMETERS_PER_MILE;
System.out.println(kilometers);
}
}
顯示160.9
2.10 找到最大和最小的byte, short, int ,long , float 以及double。這些數據類型中,哪個需要的內存最小?
最小的byte: -2^7
最大的byte: 2^7 - 1
最小的short: -2^15
最大的short: 2^15 - 1
最小的int: -2^31
最大的int: 2^31 - 1
最小的long: -2^63
最大的long: 2^63 - 1
最小的float: -3.4028235E+38
最大的float: 3.4028235E+38
最小的double:-1.7976931348623157E+308
最大的double: 1.7976931348623157E+308
byte內存最小。
2.11 給出以下求余計算的結果。
56 % 6 = 2
78 % -4 = 2
-34 % 5 = -4
-34 % -5 = -4
5 % 1 = 1
1 % 5 = 0
假設今天是周二,100天后將是周幾?
(2 + 100) % 7 = 4
周四
2.13 25/4的結果是多少? 如果你希望得到浮點數結果,如何重寫表達式。
- 6
- 25.0 / 4
2.14 給出以下代碼的結果:
System.out.println(2 * ( 5 / 2 + 5 / 2));
System.out.println(2 * 5 / 2 + 5 / 2);
System.out.println(2 * ( 5 / 2));
System.out.println(2 * 5 / 2);
- 8
- 7
- 4
- 5
2.15 下面的語句正確嗎?如果正確的話,給出輸出。
System.out.println("25 / 4 is " + 25 / 4);
System.out.println("25 / 4.0 is " + 25 / 4.0);
System.out.println(“3 * 2 / 4 is " + 3 * 2 / 4);
System.out.println("3.0 * 2 / 4 is " + 3.0 * 2 / 4);
- 25 / 4 is 6
- 25 / 4.0 is 6.25
- 3 * 2 / 4 is 1
- 3.0 * 2 / 4 is 1.5
2.16 寫一個顯示2^3.5的計算結果的語句。
a = Math.pow(2, 3.5)
2.17 假設m和r是整數。編寫一個java表達式,使得mr^2可以得到一個浮點數類型的結果。
double result = m * r * r;
2.18 在float和doubel類型的變量中保存了多少個精確位?
- float保存了7到8位
- double保存了15到17位
2.19 以下哪些是正確的浮點數類型直接量?
12.3(是), 12.3e+2(是), 23.4e-2(是), -334.4(是), 20.5(是), 39F(不是), 40D(不是)
2.20 以下哪些和52.534是等價的?
5.2534e+1, 0.52534e+2, 525.34e-1, 5.2534e+0
前三個等價,最后一個不等價
2.21 以下哪些是正確的直接量?
5_2534e+1, 2534, 5_2, 5_
前三個正確,最后一個錯誤
2.22 如何在java中表達以下算術表達式?
直接寫答案:
- 4 / 3 * (r + 34) - 9 * (a + b * c) + (3 + d * (2 + a)) / (a + b * d)
- 5.5 * Math.pow((r + 2.5), (2.5 + 1))
2.23 如何獲得當前的秒,分鐘以及小時數?
先獲取當前時間戳,再進行計算。
2.24 給出以下代碼運行的結果:
double a = 6.5;
a += a + 1;
System.out.println(a);
a = 6;
a /= 2;
System.out.println(a);
- 14
- 3
2.25 下面的說法那個為真?
a. 任何表達式都可以用作一個語句。 真
b. 表達式x++可以用作一個語句。真
c. 語句x = x + 5 也是一個表達式。真
d. x = y = x = 0是非法的。假
2.26 給出以下代碼的輸出:
int a = 6;
int b = a++;
System.out.println(a); // 7
System.out.println(b); // 6
a = 6;
b = ++a;
System.out.println(a); // 7
System.out.println(b); // 7
2.27 在一次計算中,各種類型的數值可以一起使用嗎?
可以
2.28 將一個doubel類型數值顯式類型轉換為int時,是如何處理double值的小數部分的?類型轉換改變被類型轉換的變量嗎?
- 直接去除小數部分
- 不改變
2.29 給出以下代碼片段的輸出:
float f =12.5F;
int i = (int)f;
System.out.println("f is " + f); // f is 12.5
System.out.println("i is " + i); // i is 12
2.30 題目有誤
2.31 給出以下代碼的輸出:
double amount = 5;
System.out.println(amount / 2); // 2.5
System.out.println(5 / 2); // 2
2.32 如何編寫下面的數學表達式的代碼
(-b + Math.pow((b * b - 4 * a * c), 0.5)) / (2 * a)
2.33 給出輸入值為1.99的輸出
Your amount 1.99 consists of
1 dollars
3 quarters
2 dimes
0 nickels
4 pennies
2.34 可以講一個變量聲明為int類型,之后重新將其聲明為double類型嗎?
不可以
2.35 什么是整數溢出?浮點數操作會導致溢出嗎?
- 當一個變量被賦予一個過大的值,以至無法存儲該值, 這稱為溢出。
- 會,很小的話,會引起向下溢出。
2.36 溢出會導致一個運行時錯誤嗎?
會
2.37 什么是取整錯誤?整數操作會導致取整錯誤嗎?浮點數操作會導致取整錯誤嗎?
- 取整錯誤,也稱為湊數錯誤,實在計算得到的數字的近似值和確切的算術值之間的不同。
- 不會
- 會
編程練習題
2.1 (將攝氏溫度轉換為華氏溫度)編寫程序,從控制臺讀入double型的攝氏溫度,然后將其轉換成為華氏溫度,并且顯示結果。轉換公式: 華氏溫度 = (9/5) * 攝氏溫度 + 32
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入攝氏溫度,例如 37.8: ");
double celsius = input.nextDouble();
double fahrenheit = (9.0 /5 ) * celsius + 32;
System.out.println("攝氏溫度" + celsius + "轉換成華氏溫度為 " + fahrenheit);
}
}
請輸入攝氏溫度,例如 37.8: 43
攝氏溫度43.0轉換成華氏溫度為 109.4
2.2 (計算圓柱體的體積)編寫程序,讀入圓柱體的半徑和高,并使用下列公式計算圓柱的體積:
- 面積=半徑* 半徑 * p
- 體積= 面積*高
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_2 {
public static void main(String[] args) {
final double PI = 3.14159;
Scanner input = new Scanner(System.in);
System.out.print("請輸入圓柱體的半徑: ");
double raidus = input.nextDouble();
System.out.print("請輸入圓柱體的高: ");
double length = input.nextDouble();
double area = raidus * raidus * PI;
double volume = area * length;
System.out.println("圓柱體的面積是:" + area);
System.out.println("圓柱體的體積是:" + volume);
}
}
請輸入圓柱體的半徑: 5.5
請輸入圓柱體的高: 12
圓柱體的面積是:95.0330975
圓柱體的體積是:1140.39717
2.3 (將英尺轉換為米)編寫程序,讀入英尺數,將其轉換為米數并顯示結果。一英尺等于0.305米。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入英尺數: ");
double pounds = input.nextDouble();
System.out.println(pounds + " 英尺數轉換成米數是 " + pounds * 0.305);
}
}
請輸入英尺數: 16.5
16.5 英尺數轉換成米數是 5.0325
2.4 (將磅轉換為千克)編寫程序,將磅數轉換為千克數。程序提示用戶輸入磅數,然后轉換成千克并顯示結果。一磅等于0.454千克。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入磅數: ");
double pounds = input.nextDouble();
System.out.println(pounds + " 磅數轉換成千克數是 " + pounds * 0.454);
}
}
請輸入磅數: 55.5
55.5 磅數轉換成千克數是 25.197
*2.5 (財務應用程序:計算小費)編寫一個程序,讀入一筆費用與酬金率,計算酬金和總錢數。例如, 如果用戶輸人 10 作為費用,15%作為酬金率,計算結果顯示酬金為
11.5。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_5 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入費用和酬金率: ");
double subtotal = in.nextDouble();
double rate = in.nextDouble() / 100;
double gratuity = subtotal * rate;
double total = gratuity + subtotal;
System.out.println("酬金是:" + gratuity + " 總費用是: " + total);
}
}
請輸入費用和酬金率: 10 15
酬金是:1.5 總費用是: 11.5
**2.6 (求一個整數各位數的和)編寫程序,讀取一個在 0 和 1000 之間的整數,并將該整數的各位數字相加。例如:整數是 932 , 各位數字之和為 14。
提示:利用操作符 X 分解數字,然后使用操作符 / 去掉分解出來的數字。例如:932%10=2 ,932/10=93。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_6 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入一個0到1000之間的整數: ");
int number = in.nextInt();
int number_1 = number % 10;
int number_2 = number / 10 % 10;
int number_3 = number_2 % 10;
int sum = number_1 + number_2 + number_3;
System.out.println("各個數字之和為: " + sum);
}
}
請輸入一個0到1000之間的整數: 999
各個數字之和為: 27
*2.7 (求出年教)編寫程序,提示用戶輸入分鐘數(例如十億)然后顯示這些分鐘代表多少年和多少天。 為了簡化問題,假設一年有 365天。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_7 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入分鐘數: ");
int minutes = in.nextInt();
int days = minutes / 60 / 24;
int years = days / 365;
System.out.println(minutes + "分鐘代表" + years + "年加上" + (days % 365)+ "天");
}
}
請輸入分鐘數: 1000000000
1000000000分鐘代表1902年加上214天
*2.8(當前時間)程序清單2-7給出了顯示當前格林威治時間的程序。修改這個程序,提示用戶輸入相 對于 GMT 的時區偏移量,然后顯示在這個特定時區的時間。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_8 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入時區偏移量:");
int timeZoneOffset = in.nextInt();
// 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 = totalSeconds % 60;
// Obtain the total minutes
long totalMinutes = totalSeconds / 60;
// Compute the current minute in the hour
long currentMinute = totalMinutes % 60;
// Obtain the total hours
long totalHours = totalMinutes / 60;
// Compute the current hour
long currentHour = (totalHours + timeZoneOffset) % 24;
// Display results
System.out.println("The current time is " + currentHour + ":"
+ currentMinute + ":" + currentSecond);
}
}
請輸入時區偏移量:
-12
The current time is 20:13:22
2.9 (物理:加速度)平均加速度定義為速度的變化量除以這個變化所用的時間,如下式所示:a = (v1-v0)/t 編寫程序,提示用戶輸入以米/秒為單位的起始速度 V0,以米/秒為單位的終止速度 V1,及以秒為單位的時間段t,最后顯示平均加速度。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_9 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入起始速度,終止速度,時間段(秒單位):");
double v0 = in.nextDouble();
double v1 = in.nextDouble();
double t = in.nextDouble();
System.out.println("平均加速度是:" + ((v1 - v0) / t) + "米每秒");
}
}
請輸入起始速度,終止速度,時間段(秒單位):
5.5 50.9 4.5
平均加速度是:10.088888888888889米每秒
2.10 (科學:計算能量)編寫程序,計算將水從初始溫度加熱到最終溫度所需的能量。程序應該提示 用戶輸入水的重量(以千克為單位 ),以及水的初始溫度和最終溫度。計算能量的公式是:Q = M x (最終溫度-初始溫度) x 4184,這里的 M 是以千克為單位的水的重量,溫度以攝氏度為單位,而能能量Q以焦耳為單位。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_10 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入水的重量:");
double amountOfWater = in.nextDouble();
System.out.println("請輸入水的初始溫度:");
double initialTemperature = in.nextDouble();
System.out.println("請輸入水的最終溫度:");
double finalTemperature = in.nextDouble();
double q = amountOfWater * (finalTemperature - initialTemperature) * 4184;
System.out.println("能量需要:" + q);
}
}
請輸入水的重量:
55.5
請輸入水的初始溫度:
3.5
請輸入水的最終溫度:
10.5
能量需要:1625484.0
2.11 (人口統計)重寫編程練習題1.11,提示用戶輸人年數,然后顯示這個年數之后的人口值。將編程練習題 1.11中的提示用于這個程序。人口數應該類型轉換為一個整數。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_11 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入年數:");
int years = in.nextInt();
System.out.println(312032486 + (years * 365 * 24 * 60 * 60 / 7) - (years * 365 * 24 * 60 * 60 / 13) + (years * 365 * 24 * 60 * 60 / 45));
}
}
請輸入年數:5
325932970
2.12 (物理:求出跑道長度)假設一個飛機的加速度是 a 而起飛速度是 v, 那么可以使用下面的公式計算出飛機起飛所需的最短跑道長度:跑道長度 = v^2 / 2a,編寫程序,提示用戶輸人以米 / 秒( m/s) 為單位的速度 v 和以米 / 秒的平方(m/s^2) 為單位的加速度 a, 然后顯示最短跑道長度。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_12 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入速度和加速度:");
double speed = in.nextDouble();
double accdleration = in.nextDouble();
double length = Math.pow(speed, 2) / (2 * accdleration);
System.out.println("最短跑道長度為:" + length);
}
}
請輸入速度和加速度:60. 3.5
最短跑道長度為:514.2857142857143
**2.13 (財務應用程序:復利值)假設你每月向銀行賬戶存100美元,年利率為5%,那么每月利率是 0.05/12=0.004 17。
- 第一個月之后,賬戶上的值就變成:
100 * (1 + 0.00417) = 100.417 - 第二個月之后,賬戶上的值就變成:
(100 + 100.417) * (1 + 0.00417) = 201.252 - 第三個月之后,賬戶上的值就變成:
(100 + 201.252) * (1 + 0.00417) = 302.507
依此類推。編寫程序顯示六個月后賬戶上的錢數。(在編程練習題 5.30中,你將使用循環來簡化這里的代碼,并能顯示任何一個月之后的賬戶值。)
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_13 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入你的每月存款金額:");
double amount = in.nextDouble();
double rateOfMonth = 1 + 0.00417;
double totalOfMonth1 = amount * rateOfMonth;
double totalOfMonth2 = (amount + totalOfMonth1) * rateOfMonth;
double totalOfMonth3 = (amount + totalOfMonth2) * rateOfMonth;
double totalOfMonth4 = (amount + totalOfMonth3) * rateOfMonth;
double totalOfMonth5 = (amount + totalOfMonth4) * rateOfMonth;
double totalOfMonth6 = (amount + totalOfMonth5) * rateOfMonth;
System.out.println("6個月后賬上余額為:" + totalOfMonth6);
}
}
請輸入你的每月存款金額:100
6個月后賬上余額為:608.8181155768638
2.14 (醫療應用程序:計算 BMI)身體質量指數(BMI)是對體重的健康測量。它的值可以通過將體 重(以公斤為單位 )除以身高(以米為單位)的平方值得到。編寫程序,提示用戶輸人體重(以 磅為單位)以及身髙(以英寸為單位),然后顯示 BMI。注意:一磅是0.4S3S9237公斤,一英 寸是 0.0254 米。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_14 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入你的體重(單位:磅):");
double weight = in.nextDouble() * 0.45359237;
System.out.print("請輸入你的身高(單位:英尺):");
double height = in.nextDouble() * 0.0254;
System.out.println("BMI 是 " + (weight / (height * height)));
}
}
請輸入你的體重(單位:磅):95.5
請輸入你的身高(單位:英尺):50
BMI 是 26.857257942215885
2.15 (幾何:兩點間距離)編寫程序,提示用戶輸人兩個點(x1,y1)和(x2,y2),然后顯示兩點間的距離。計算兩點間距離的公式:(x2-x1)^2 + (y2-y1)^2 結果的平方根,注意:可以使用Math.pow(a,0.5) 來計算。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_15 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入x1 和 y1的值:");
double x1 = in.nextDouble();
double y1 = in.nextDouble();
System.out.print("請輸入x2 和 y2的值:");
double x2 = in.nextDouble();
double y2 = in.nextDouble();
double distance = Math.pow(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2), 0.5);
System.out.println("兩點之間的距離是:" + distance);
}
}
請輸入x1 和 y1的值:1.5 -3.4
請輸入x2 和 y2的值:4 5
兩點之間的距離是:8.764131445842194
2.16 (幾何:六邊形面積)編寫程序,提示用戶輸人六邊形的邊長,然后顯示它的面積。公式是:3 * 3的平方根 / 2 * s^2。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_16 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入6邊型的邊長:");
double s = in.nextDouble();
double area = 3 * Math.pow(3, 0.5) / 2 * Math.pow(s, 2);
System.out.println("6邊型的面試是:" + area);
}
}
請輸入6邊型的邊長:5.5
6邊型的面試是:78.59180539343781
2.17 (科學:風寒溫度)外面到底有多冷?只有溫度是不足以提供答案的,包括風速、相對濕度以 及陽光等其他的因索在確定室外是否寒冷方面都起了很重要的作用。200丨年,國家氣象服務(NWS) 利用溫度和風速計算新的風寒溫度,來衡量寒冷程度。計算公式如下所示:twc = 35.74 + 0.6215ta - (35.75 * v)^0.16 + (0.4275 * ta)^0.16,這里的ta是室外的溫度,以華氏攝氏度為單位,而 v 是速度,以每小時英里數為單位。twc是風寒溫度。該公式不適用于風速低于2mph,或溫度在-58F以下或41F以上的情況。編寫程序,提示用戶輸入在-58F和41F之間的度數,同時大于或等于2的風速,然后顯 示風寒溫度。使用 Math.pow(a.b)來計算v^0.16。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_17 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入-58F和41F之間的數字:");
double fahrenheit = in.nextDouble();
System.out.println("請輸入大于等于2的數字:");
double speed = in.nextDouble();
double index = 35.74 + 0.6215 * fahrenheit - 35.75 * Math.pow(speed, 0.16)
+ 0.4275 * fahrenheit * Math.pow(speed, 0.16);
System.out.println("風寒溫度是:" + index);
}
}
請輸入-58F和41F之間的數字:
5.3
請輸入大于等于2的數字:
6
風寒溫度是:-5.567068455881625
2.18 (打印表格)編寫程序,顯示下面的表格。將浮點數值類型轉換為整數。
a b pow(a, b)
1 2 1
2 3 8
3 4 81
4 5 1024 5 6 15625
package com.levelksk.chapter_2.training;
public class Training2_18 {
public static void main(String[] args) {
System.out.println("a b pow(a, b)");
System.out.println("1 2 " + (int)Math.pow(1, 2));
System.out.println("2 3 " + (int)Math.pow(2, 3));
System.out.println("3 4 " + (int)Math.pow(3, 4));
System.out.println("4 5 " + (int)Math.pow(4, 5));
System.out.println("5 6 " + (int)Math.pow(5, 6));
}
}
*2.19 (幾何:三角形的面積)編寫程序,提示用戶輸人三角形的三個點(x1,y1)、(x2,y2) 和 (x3,y3), 然后顯示它的面積。計算三角形面積的公式是:
- s=(邊1+邊2+邊3)/2
- 面積: (s * (s - 邊1)(s - 邊2)(s - 邊3))^0.5
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_19 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入三角形三個點的坐標: ");
double x1 = in.nextDouble();
double y1 = in.nextDouble();
double x2 = in.nextDouble();
double y2 = in.nextDouble();
double x3 = in.nextDouble();
double y3 = in.nextDouble();
double s1 = Math.pow(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2), 0.5);
double s2 = Math.pow(Math.pow(x3 - x2, 2) + Math.pow(y3 - y2, 2), 0.5);
double s3 = Math.pow(Math.pow(x1 - x3, 2) + Math.pow(y1 - y3, 2), 0.5);
double s = (s1 + s2 +s3) / 2;
double area = Math.pow(s * (s - s1) * (s - s2) * (s - s3), 0.5);
System.out.println("三角形的面積是: " + area);
}
}
請輸入三角形三個點的坐標:
1.5 -3.4 4.6 5 9.5 -3.4
三角形的面積是: 33.600000000000016
*2.20 (財務應用程序:計算利息)如果知道收支余額和年利率的百分比,就可以使用下面的公式計算下個月要支付的利息額: 利息額 = 收支余額 x (年利率 / 1200),編寫程序,讀取收支余額和年百分利率,顯示兩個版本的下月利息。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_20 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入收支余額和年利率:");
double balance = in.nextDouble();
double rate = in.nextDouble();
System.out.println("下月利息是:" + balance * (rate / 1200));
}
}
請輸入收支余額和年利率:
1000 3.5
下月利息是:2.916666666666667
2.21 (財務應用:計算未來投資值)編寫程序,讀取投資總額、年利率和年數,然后使用下面的公式顯示未來投資金顛:未來投資金額 = 投資總額 X ( 1 + 月利率)^年數*12,例如:如果輸入的投資金額為 1000, 年利率為 3.25%, 年數為1, 那么未來投資額為 1032.98。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_21 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入投資總額:");
double amount = in.nextDouble();
System.out.print("請輸入月利率:");
double rate = in.nextDouble() / 100;
System.out.print("請輸入投資年數:");
double years = in.nextDouble();
double total = 1000 * Math.pow(1 + rate, years * 12);
System.out.println("未來投資金額是:$" + total);
}
}
請輸入投資總額:1000.56
請輸入月利率:4.5
請輸入投資年數:1
未來投資金額是:$1695.8814327678656
2.22 ( 財務應用:貨幣單位)改寫程序淸單 2-10, 解決將 double 型值轉換為 int 型值時可能會造成精度損失的問題。輸入的輸入值是一個整數,其最后兩位代表的是美分幣值。例如:1156 就表示的是 11美元 S6 美分。
2.23 (駕駛費用)編寫一個程序,提示用戶輸入駕駛的距離、以每加侖多少英里的汽車燃油性能,以及每加侖的價格,然后顯示旅程的費用。
package com.levelksk.chapter_2.training;
import java.util.Scanner;
public class Training2_23 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入行駛的距離:");
double distance = in.nextDouble();
System.out.print("請輸入每加侖燃油可以行使的距離:");
double miles = in.nextDouble();
System.out.print("請輸入每加侖的價格:");
double price = in.nextDouble();
System.out.println("旅程的總費用是:" + distance / miles * price);
}
}