java第二章复习_《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%作为酬金率,计算结果显示酬金为

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);

}

}

你可能感兴趣的:(java第二章复习)