欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java语言程序设计(第三版)第二章课后习题答案(仅供参考)

程序员文章站 2022-04-08 23:09:49
2.1 注意不同类型转换 2.2 2.3 2.4 使用 循环 每次对 个位 取数相加 取数后 除以10 使前一位 变为 个位 继续 判断小于等于0时停止 2.5 注意 System.currentTimeMillis()方法 返回 long 形 需要转换为 int 形 2.6 a 不能为 0 b2 ......

2.1   注意不同类型转换

1 import java.util.scanner;
2 
3 public class ch02 {
4     public static void main(string[] args) {
5         scanner sc = new scanner(system.in);
6         double f = sc.nextdouble();
7         double t = (5.0/9)*(f-32);   //  注意 (5/9) 结果为 整形 要写成 (5.0/9)
8         system.out.println(t)
9 }

 

2.2

 1 import java.util.scanner;
 2 
 3 public class ch02 {
 4     public static void main(string[] args) {
 5         scanner sc = new scanner(system.in);
 6         system.out.println("请输入圆柱体半径和高:");
 7         double r = sc.nextdouble();
 8         double h = sc.nextdouble();
 9         double v = math.pi * r * r * h;  //圆周率方法  math.pi
10         system.out.println(v);
11 }

 

2.3

 1 import java.util.scanner;
 2 
 3 public class ch02 {
 4     public static void main(string[] args) {
 5         scanner sc = new scanner(system.in);
 6         system.out.println("请输入体重和身高:");
 7         double g = sc.nextdouble();
 8         double h = sc.nextdouble();
 9         double bmi = g / (h * h);
10         system.out.println(bmi);
11 }

 

2.4  使用 循环 每次对 个位 取数相加 取数后 除以10 使前一位 变为 个位 继续 判断小于等于0时停止

 1 import java.util.scanner;
 2 
 3 public class ch02 {
 4     public static void main(string[] args) {
 5         int sum = 0;
 6         scanner sc = new scanner(system.in);
 7         int num1 = sc.nextint();
 8         while (num1 > 0)        // 与 0 比较 判断 是否 需要 取数
 9         {
10             sum += (num1%10);   // 通过取余  获得个位数字
11             num1 /= 10;         // 每次取余后 除以10 
12         }
13         system.out.println(sum);
14 }

 

2.5  注意 system.currenttimemillis()方法 返回 long 形 需要转换为 int

 1 public class ch02 {
 2     public static void main(string[] args) {
 3         // 通过 system.currenttimemillis() 方法 获得 从1970年1月1日 00:00:00 到现在的 毫秒数
 4         // 28800000 是 格林时间 与 我们 时区 的 时间差值
 5         // 对 86400000 取余 是 把 满一天的时间都去掉 获取多出来的不足一天的时间
 6         int t = (int)((system.currenttimemillis()+28800000)%86400000);
 7         int hour = t/3600000;               // 除 3600000 获取满小时的个数 即 求小时 为几点
 8         int mine = t%3600000/60000;         // 计算 不足一小时 的时间 里 有多少分钟
 9         int s = t%3600000%60000/1000;        // 计算不足一分钟的时间里 有多少秒  不要忘记 除以 1000 (因为 单位 为 毫秒)
10         system.out.println("当前时间: "+hour+":"+mine+":"+s+"  gmt");
11 }

 

2.6  a 不能为 0 

  b2 - 4 * a * c  不能为 0

 1 import java.util.scanner;
 2 
 3 public class ch02 {
 4     public static void main(string[] args) {
 5         double sum,a,b,c,t;
 6         scanner sc = new scanner(system.in);
 7         while (true) {
 8             a = sc.nextdouble();
 9             b = sc.nextdouble();
10             c = sc.nextdouble();
11             t = b*b-4*a*c;
12             if (a == 0) {
13                 system.out.println("a 不能为 0,请重新测试 ^_^");
14             } else if (t < 0) {
15                 system.out.println("b*b-4*a*c不能为0,请重新测试");
16             }
17             else
18             {
19                 break;
20             }
21         }
22         sum = ((-b+math.sqrt(t)/(2*a)));     //( 2*a )  注意加括号 
23         system.out.println(sum);

 

2.7  注意计算公式先后顺序  多使用小括号

 1 import java.util.scanner;
 2 
 3 public class ch02 {
 4     public static void main(string[] args) {
 5         scanner sc = new scanner(system.in);
 6         double yrate = sc.nextdouble();
 7         double amount = sc.nextdouble();
 8         double year = sc.nextdouble();
 9         double month = (amount * (yrate/12))/(1-(1/math.pow(1+yrate/12,year*12)));
10         double sumamount = month*12*year;
11         system.out.println("月支付金额:"+month+"\n总偿还金额:"+sumamount);
12 }