《Java語言程序設計(基礎篇)》第二章復習題和編程練習題

復習題

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%作為酬金率,計算結果顯示酬金為 1.5, 總費用為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);
    }
}


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容

  • 復習題 1.1 什么是硬件和軟件? 硬件包括計算機中可以看得見的物理部分,軟件是看不見的指令,這些指令可以控制硬件...
    夜夜月閱讀 10,826評論 2 12
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,776評論 18 139
  • 在C語言中,五種基本數據類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,371評論 0 2
  • 什么時候是女人一生最好的時候? 我覺得是一個女人健康、快樂的時候。 比如那廣場舞上跳舞的婦女,那大學校園里自習的少...
    大熊律師閱讀 342評論 0 2
  • 緣分這個東西,你不得不信;默契這個東西,也必然是存在的。有的人,遇到即是一輩子,那種輕松與舒適不會任言語與...
    流水脈脈閱讀 295評論 0 1