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


推荐阅读更多精彩内容

  • 复习题 1.1 什么是硬件和软件? 硬件包括计算机中可以看得见的物理部分,软件是看不见的指令,这些指令可以控制硬件...
    夜夜月阅读 9,504评论 2 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 119,234评论 16 133
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 1,665评论 0 2
  • 什么时候是女人一生最好的时候? 我觉得是一个女人健康、快乐的时候。 比如那广场舞上跳舞的妇女,那大学校园里自习的少...
    大熊律师阅读 95评论 0 2
  • 缘分这个东西,你不得不信;默契这个东西,也必然是存在的。有的人,遇到即是一辈子,那种轻松与舒适不会任言语与...
    流水脉脉阅读 123评论 0 1