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