2022级-JAVA02 基础语法1--标识符、常量与变量、数据类型、运算符与表达式

目录

7-1 sdut-入门-买糖果

输入格式:

输出格式:

输入样例:

输出样例:

参考代码: 

7-2 sdut-入门-三个整数和、积与平均值

输入格式:

输出格式:

输入样例:

输出样例:

参考代码:

7-3 sdut-计算球体积

输入格式:

输出格式:

输入样例:

输出样例:

参考代码:

7-4 sdut-数据类型-1-求班级男女生比例

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

输入样例:

输出样例:

参考代码:

7-5 sdut-数据类型-2 应用勾股定理,了解世界灿烂文明

输入格式:

输出格式:

输入样例:

输出样例:

参考代码:

7-6 sdut-数据类型-4 第七次全国人口普查数据分析

输入格式:

输出格式:

输入样例:

输出样例:

参考代码:

7-7 sdut-数据类型-3 计算飞行员到最近机场的距离

输入格式:

输出格式:

输入样例:

输出样例:

参考代码:

7-8 sdut-sel-0-输出学生个人信息(II)

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

参考代码:

7-9 sdut-JAVA判断合法标识符

输入格式:

输出格式:

输入样例:

输出样例:

参考代码:

7-10 求一个三位正整数各位数字之和

输入格式:

输出格式:

输入样例:

输出样例:

参考代码:

7-11 改错题01

输入格式:

输出格式:

输入样例:

输出样例:

参考代码:

7-12 计算三角形面积。

输入格式:

输出格式:

输入样例:

输出样例:

参考代码:

7-13 以英里计的平均速度

输入格式:

输出格式:

输入样例:

输出样例:

参考答案:

7-14 推算星期

输入格式

输出格式

输入样例

输出样例

参考代码:

7-15 Time Difference

Input Format

Output Format

Sample Input

Sample Output

参考代码:

7-16 逆序的三位数

输入格式:

输出格式:

输入样例:

输出样例:

参考答案:

7-17 学投资

输入格式:

输出格式:

输入样例:

输出样例:

参考答案:

7-18 计算PI值

输入格式:

输出格式:

输入样例:

输出样例:

参考答案:

7-19 jmu-Java-02基本语法-05-浮点数的精确计算

输入样例:

输出样例:

参考答案:


7-1 sdut-入门-买糖果

小瑜是个爱吃糖果的馋鬼,天天嚷着要爸爸买糖果,可是爸爸很忙,哪有时间啊,于是就让小瑜自己去了。

糖果3角钱一块,爸爸给小瑜n元钱,请你告诉小瑜最多能买几块糖,还剩几角钱?

输入格式:

输入爸爸给小瑜的钱n元,n为整数。

输出格式:

小瑜最多能买回的糖块数以及剩下的钱(单位为:角),用1个空格分隔。

输入样例:

2

输出样例:

6 2

参考代码: 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int n;
        n = reader.nextInt();
        n = n * 10;
        int a, b;
        a = n / 3;
        b = n % 3;
        System.out.println(a + " " + b);
    }
}

7-2 sdut-入门-三个整数和、积与平均值

给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。

输入格式:

输入只有三个正整数a、b、c。数据之间用一个空格隔开。

输出格式:

输出一行,包括三个的和、乘积、平均数。 数据之间用一个空格隔开,其中平均数保留小数后面两位。

输入样例:

2 3 3

输出样例:

8 18 2.67

参考代码:

import java.util.Scanner;
import java.text.DecimalFormat;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int a, b, c;
        a = reader.nextInt();
        b = reader.nextInt();
        c = reader.nextInt();
        int sum, mul;
        double div;
        sum = a + b + c;
        mul = a * b * c;
        div = sum / 3.0;
        DecimalFormat df = new DecimalFormat("0.00");
        System.out.println(sum + " " + mul + " " + df.format(div));
    }
}

7-3 sdut-计算球体积

根据输入的半径值,计算球的体积。

提示:PI=3.1415926。

输入格式:

输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。

输出格式:

输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。

提示:PYTHON3输出三位小数的语句:print("%.3f" % (v)) ;其中,v为变量。

输入样例:

1
1.5

输出样例:

4.189
14.137

参考代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        while (reader.hasNext()) {
            double r = reader.nextDouble();
            double v;
            v = 4 * 3.1415926 * r * r * r / 3.0;
            System.out.printf("%.3f\n",v);
        }
    }
}

7-4 sdut-数据类型-1-求班级男女生比例

新的一学期开始,HH同学在学校认识了很多的同学,但是他却不知道自己本班男生和女生的比例是多少。对于学过编程的你一定简单极了吧。你能帮他算出男生女生的百分比吗?

输入格式:

每行输入正整数男生和女生的数目n,m(0<n,m<1000)。

输出格式:

输出男生女生所占的比例(保留小数点后两位)。

输入样例1:

20 30

输出样例1:

40.00% 60.00%

输入样例2:

10 10

输出样例2:

50.00% 50.00%

输入样例:

50 0

输出样例:

100.00% 0.00%

参考代码:

import java.util.Scanner;
import java.text.DecimalFormat;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int a, b;
        a = reader.nextInt();
        b = reader.nextInt();
        DecimalFormat df = new DecimalFormat("0.00");
        System.out.println(df.format(100.0 * a / (a + b)) + "% " + df.format(100.0 * b / (a + b)) + "%");
    }
}

7-5 sdut-数据类型-2 应用勾股定理,了解世界灿烂文明

意义:勾股定理是历史上第一个把数与形联系起来的定理,导致了无理数的发现,引起第一次数学危机,大大加深了人们对数的理解。勾股定理是欧氏几何的基础定理,不仅在几何学中是一颗光彩夺目的明珠,被誉为“几何学的基石”,而且在高等数学和其他科学领域也有着广泛的应用。1971年5月15日,尼加拉瓜发行了一套题为“改变世界面貌的十个数学公式”邮票,这十个数学公式由著名数学家选出的,勾股定理是其中之首。

简史:在中国,公元前十一世纪,数学家商高(西周初年人)就提出“勾三、股四、弦五”。编写于公元前一世纪以前的《周髀算经》中记录着商高与周公的一段对话。商高说:“……故折矩,勾广三,股修四,经隅五。”意为:当直角三角形的两条直角边分别为3(勾)和4(股)时,径隅(弦)则为5。以后人们就简单地把这个事实说成“勾三股四弦五”,根据该典故称勾股定理为商高定理。
公元三世纪,三国时代的赵爽对《周髀算经》内的勾股定理作出了详细注释,记录于《九章算术》中“勾股各自乘,并而开方除之,即弦”,赵爽创制了一幅“勾股圆方图”,用数形结合得到方法,给出了勾股定理的详细证明。后刘徽在刘徽注中亦证明了勾股定理。
在中国清朝末年,数学家华蘅芳提出了二十多种对于勾股定理证法。

在国外,远在公元前约三千年的古巴比伦人就知道和应用勾股定理,他们还知道许多勾股数组。美国哥伦比亚大学图书馆内收藏着一块编号为“普林顿322”的古巴比伦泥板,上面就记载了很多勾股数。古埃及人在建筑宏伟的金字塔和测量尼罗河泛滥后的土地时,也应用过勾股定理。
公元前六世纪,希腊数学家毕达哥拉斯证明了勾股定理,因而西方人都习惯地称这个定理为毕达哥拉斯定理。
公元前4世纪,希腊数学家欧几里得在《几何原本》中给出一个证明。
1940年《毕达哥拉斯命题》出版,收集了367种不同的证法。

定义:在平面上的一个直角三角形中,两个直角边边长的平方加起来等于斜边长的平方。如果设直角三角形的两条直角边长度分别是和,斜边长度是,那么可以用数学语言表达:a^2 + b^2 = c^2

请编程程序,实现如下功能:输入直接三角形的两个直角边的边长,求它们的斜边边长,结果保留2位小数。

提示:在Java中利用Math类的方法——Math.sqrt()求平方根。

java.lang.Math.sqrt(double a) 返回一个double值的正平方根。

输入格式:

输入有若干行,每行有2个数值,分别表示直角三角形的两个直角边长度,用空格分隔。

输出格式:

对应每行输入数据,输出直角三角形的斜边长度,结果保留2位小数。

输入样例:

 3 4
 2.3 3
 5 6
 10 12

输出样例:

在这里给出相应的输出。例如:

5.00
3.78
7.81
15.62

参考代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        while (reader.hasNext()) {
            double a = reader.nextDouble();
            double b = reader.nextDouble();
            double c = Math.sqrt(a * a + b * b);
            System.out.printf("%.2f\n", c);
        }
    }
}

7-6 sdut-数据类型-4 第七次全国人口普查数据分析

第七次全国人口普查结果公布!

数据来源: http://www.chinanews.com/gn/2021/05-11/9474601.shtml

   我国以2020年11月1日零时为标准时点,开展了第七次全国人口普查,主要目的是全面查清我国人口数量、结构、分布等方面情况,为完善我国人口发展战略和政策体系、制定经济社会发展规划、推动高质量发展提供准确统计信息支持。

  截至2021年5月11日,国家统计局发布普查数据。现抽取部分数据进行分析。请根据每一步的要求,进行相应的计算并输出。每一类数据占一行,数据之间有一个空格作分隔。

  (一)人口总量。全国人口共141178万人,2010年(第六次全国人口普查数据)的133972万人相比,增加 a1=? 万人,增长率为 a2=?% ,年平均增长率为 a3=? %。 (其中:a1为整数,a2和a3各保留2位小数)

  (二)户别人口。全国共有家庭户49416万户,家庭户人口为129281万人;平均每个家庭户的人口为 b1=?人, 2010年为 3.10人,减少 b2=? 人。(集体户2853万户,集体户人口为11897万人。) (其中:b1和b2各保留2位小数)

  (三)年龄构成。0—14岁人口为25338万人,占 c1=? %;15—59岁人口为89438万人,占 c2=? %;60岁及以上人口为26402万人,占 c3=?%。(其中:c1、c2、c3 各保留2位小数)

  (四)受教育程度人口。具有大学文化程度的人口为21836万人,占总人口的d1=? %。(d1保留2位小数)  

输入格式:

输入数据有4行。第1、2、3、4行的数据含义为如下信息的数量(单位为:万人),若未指定时间即为2020年11月1日标准时点的数据。数据之间用空格作分隔符。

全国总人口 2010年全国总人口

总家庭户 家庭户总人数 2010年家庭户平均人数

0—14岁人口 15—59岁人口 60岁及以上人口

具有大学文化程度的人口

输出格式:

输出数据有4行。第1、2、3、4行的数据含义为如下信息,,若未指定时间即为2020年11月1日标准时点的数据。数据之间用1个空格作分隔符。

全国总人口比2010年增加数量(a1) 增长率(a2%) 年平均增长率( a3%)

平均每个家庭户的人口(b1) 比2010年减少人数(b2)

0—14岁人口占比(c1%) 15—59岁人口占比(c2%) 60岁及以上人口占比(c3%)

具有大学文化程度的人口占比(d1%)

(说明:a1为整数,a2、a3、b1、b2、c1、c2、c3、d1均保留2位小数;如果为增长率或变化率,均以百分数形式展示数据)

输入样例:

141178 133972
49416 129281 3.10
25338 89438 26402
21836

输出样例:

7206 5.38% 0.54%
2.62 0.48
17.95% 63.35% 18.70%
15.47%

参考代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int total2020 = reader.nextInt();
        int total2010 = reader.nextInt();
        int a1 = total2020 - total2010;
        double a2 = 1.0 * a1 / total2010;
        double a3 = a2 / 10;
        System.out.printf("%d %.2f%% %.2f%%\n", a1, a2 * 100, a3 * 100);
        double families = reader.nextInt();
        double familyPersons = reader.nextInt();
        double avg2010 = reader.nextDouble();
        double b1_avg2020 = familyPersons / families;
        double b2 = avg2010 - b1_avg2020;
        System.out.printf("%.2f %.2f\n", b1_avg2020, b2);
        double age14 = reader.nextInt();
        double age59 = reader.nextInt();
        double age60 = reader.nextInt();
        double c1 = age14 / total2020;
        double c2 = age59 / total2020;
        double c3 = age60 / total2020;
        System.out.printf("%.2f%% %.2f%% %.2f%%\n", c1*100,c2*100,c3*100);
        double highEdu = reader.nextInt();
        double d1 = highEdu/total2020;
        System.out.printf("%.2f%%\n", d1*100);
    }
}

7-7 sdut-数据类型-3 计算飞行员到最近机场的距离

当飞机上的仪器出故障时,飞行员常常得估计他们到最近机场的距离。他们的方法是利用他们的高度和他们和机场之间的角度的估计。编写一个程序,帮助飞行员进行计算。

程序应以高度和角度作为输入,输出估计距离。公式为:距离distance=高度hight/ tan(degree)。

说明:tan(degree)为角度为degree的正切值。

提示:在JAVA中,Math类的静态方法tan(double degree),用于计算弧度为degree的角度的正切值。

在C语言中,函数名: tan, 头文件:<math.h>, 函数原型: double tan(double x); 功能: 正切函数,参 数:double x 为要操作的弧度,返回值:返回x弧度的正切值。

输入格式:

输入数据有多行。

每行为一组输入,分别是高度、角度。角度介于(0,PI/2)区间。

输出格式:

对应每行输入,求飞行员到机场的距离,保持2位小数。

输入样例:

在这里给出一组输入。例如:

1033102 0.15
10210 0.8
104320 0.7
13200  1.524
84535300 0.523

输出样例:

在这里给出相应的输出。例如:

6835613.92
9916.10
123853.07
618.16
146622115.56

参考代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        while(reader.hasNext()){
            double h, d;
            h = reader.nextDouble();
            d = reader.nextDouble();
            double distance = 1.0 * h / Math.tan(d);
            System.out.printf("%.2f\n", distance);
        }
    }
}

7-8 sdut-sel-0-输出学生个人信息(II)

输入数据的首行为是否要读入学生信息的标志。
若首行标志为1,则读入学生信息之后再进行输出; 
若首行标志为0,则输出默认的学生信息(见输出样例1)。

输入格式:

首行表示是否读取学生信息的标志。
后续若干行表示学生信息。

标志行(0或1)——0后续无输入数据;1后续有数据输入
学号
姓名
专业
班级
联系方式

输出格式:

每位学生的信息,格式如下:

学号:***
姓名:***
专业:***
班级:***
联系方式:***

输入样例1:

0

输出样例1:

学号:202000101
姓名:张三
专业:计算机科学与技术
班级:计科2001
联系方式:18966666666

输入样例2:

1
202000202
李四
软件工程
软件2002
13966666777

输出样例2:

学号:202000202
姓名:李四
专业:软件工程
班级:软件2002
联系方式:13966666777

参考代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int f;
        f = reader.nextInt();
        String a, b, c, d, e;
        a = "202000101";
        b = "张三";
        c = "计算机科学与技术";
        d = "计科2001";
        e = "18966666666";
        if (f == 1) {
            a = reader.next();
            b = reader.next();
            c = reader.next();
            d = reader.next();
            e = reader.next();
        }
        System.out.printf("学号:%s\n姓名:%s\n专业:%s\n班级:%s\n联系方式:%s\n", a, b, c, d, e);
    }
}

7-9 sdut-JAVA判断合法标识符

输入若干行字符串,判断每行字符串是否可以作为JAVA语法的合法标识符。

判断合法标识符的规则:由字母、数字、下划线“_”、美元符号“$”组成,并且首字母不能是数字。

输入格式:

 输入有多行。

每行一个字符串,字符串长度不超过10个字符。

输出格式:

若该行字符串可以作为JAVA标识符,则输出“true”;否则,输出“false”。

输入样例:

abc
_test
$test
a 1
a+b+c
a’b
123
变量

输出样例:

true
true
true
false
false
false
false
true

参考代码:

import javax.xml.stream.events.Characters;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        while (reader.hasNext()) {
            String str;
            str = reader.nextLine();
            boolean f = true;
            for (int i = 0; i < str.length(); i++) {
                if (i == 0) {
                    if (!Character.isJavaIdentifierStart(str.charAt(i))) {
                        f = false;
                        break;
                    }
                } else {
                    if (!Character.isJavaIdentifierPart(str.charAt(i))) {
                        f = false;
                        break;
                    }
                }
            }
            System.out.println(f);
        }
    }
}

7-10 求一个三位正整数各位数字之和

求一个三位正整数各位数字之和

输入格式:

输入一个三位的正整数

输出格式:

输出百十个位上各位数字的和

输入样例:

678

输出样例:

21

参考代码:

import javax.xml.stream.events.Characters;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int n;
        n = reader.nextInt();
        int a, b , c;
        a = n / 100;
        b = n / 10 % 10;
        c = n % 10;
        int sum;
        sum = a + b + c;
        System.out.println(sum);
    }
}

7-11 改错题01

请把如下有语法错误的程序段修改正确,按要求输出样例结果。

public class Main {
    public static void main(String[] args) {
        int i;
        int k=100.0;
        int j=i+1;
        
        System.out.printf("j is " + j + " and k is " + k);
    }
}

输入格式:

无输入

输出格式:

输出结果:j is 1 and k is 100

输入样例:

无输入

输出样例:

j is 1 and k is 100

参考代码:

public class Main {
    public static void main(String[] args) {
        int i = 0;
        int k=100;
        int j=i+1;
        
        System.out.printf("j is " + j + " and k is " + k);
    }
}

7-12 计算三角形面积。

已知三角形三边长(假设能构成三角形),计算三角形面积。

输入格式:

输入三角形三边长a,b,c(整数)。

输出格式:

对每一组输入,在一行中输出面积的值。

输入样例:

在这里给出一组输入。例如:

3
4
5

输出样例:

在这里给出相应的输出。例如:

6.0

参考代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int a, b, c;
        a = reader.nextInt();
        b = reader.nextInt();
        c = reader.nextInt();
        double p = 1.0 * (a + b + c) / 2;
        double s = Math.sqrt(p * (p - a) * (p - b) * (p - c));
        System.out.printf("%.1f", s);
    }
}

7-13 以英里计的平均速度

假设一个跑步者m分钟s秒内跑了d公里。编写一个程序显示以每小时多少英里为单位的平均速度值。(注意:1英里等于1.6公里)

输入格式:

在一行中给出3个正整数,分别是m,s,d。

输出格式:

输出每小时多少英里为单位的平均速度值。保留小数点后2位。

输入样例:

45 30 14

输出样例:

11.54

参考答案:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        double m, s, d;
        m = reader.nextInt();
        s = reader.nextInt();
        d = reader.nextInt();
        double ans;
        ans = (d / 1.6) / (m / 60.0 + s / 3600.0);
        System.out.printf("%.2f", ans);
    }
}

7-14 推算星期

若告诉你今天是星期几,请问:过几天后是星期几?

请编写程序,输入今天的星期数 w 和所过的天数 n,计算并输出未来这一天的星期数 d。

注:用整数值 0 ~ 6 表示星期日、星期一、... 、星期六。

星期
星期日0
星期一1
星期二2
星期三3
星期四4
星期五5
星期六6

输入格式

w 和 n

输出格式

d

注:题目保证 w、n 和 d 的值都在 int 类型的表示范围内。

输入样例

3 100

输出样例

5

参考代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        long w, n;
        w = reader.nextLong();
        n = reader.nextLong();
        w += n;
        w %= 7;
        System.out.println(w);
    }
}

7-15 Time Difference

What is the time difference between 10:30 and 11:45?

Your program reads two time spots and prints the time difference between them, in terms of hours and minutes.

Input Format

Two time spots, in 24-hour, each is represented as two numbers, as "hour minute". The second time spot is later than the first and both are within the same day.

Output Format

Two numbers represent the time difference. The first is the hours in the difference, while the second is the minutes.

Sample Input

10 30 11 45

Sample Output

1 15

参考代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int h1, m1, h2, m2;
        h1 = reader.nextInt();
        m1 = reader.nextInt();
        h2 = reader.nextInt();
        m2 = reader.nextInt();
        int sum1, sum2;
        sum1 = h1 * 60 + m1;
        sum2 = h2 * 60 + m2;
        sum1 = sum2 - sum1;
        System.out.println((sum1 / 60) + " " + (sum1 % 60));
    }
}

7-16 逆序的三位数

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:

每个测试是一个3位的正整数。

输出格式:

输出按位逆序的数。

输入样例:

123

输出样例:

321

参考答案:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int n;
        n = reader.nextInt();
        int a, b, c;
        a = n / 100;
        b = n / 10 % 10;
        c = n % 10;
        n = a + b * 10 + c * 100;
        System.out.println(n);
    }
}

7-17 学投资

小白学习了一些复利投资知识,想比较一下复利能多赚多少钱(所谓复利投资,是指每年投资的本金是上一年的本金加收益。而非复利投资是指每年投资金额不包含上一年的收益,即固定投资额)。假设他每年固定投资M元(整数),每年的年收益达到P(0<P<1,double),那么经过N(整数)年后,复利投资比非复利投资多收入多赚多少钱呢?计算过程使用双精度浮点数,最后结果四舍五入输出整数(Math的round函数)。

输入格式:

M P N

输出格式:

复利收入(含本金),非复利收入(含本金),复利比非复利收入多的部分(全部取整,四舍五入)

输入样例:

10000 0.2 3

输出样例:

17280 16000 1280

参考答案:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int m, n;
        double p;
        m = reader.nextInt();
        p = reader.nextDouble();
        n = reader.nextInt();
        double n1 = n;
        double ans1 = m;
        while (n1-- > 0) {
            ans1 = ans1 + ans1 * p;
        }
        n1 = n;
        double ans2 = m;
        while (n1-- > 0) {
            ans2 = ans2 + m * p;
        }
        System.out.println(Math.round(ans1) + " " + Math.round(ans2) + " " + Math.round((ans1 - ans2)));
    }
}

7-18 计算PI值

写一个程序显示如下式子的结果:
PI = 4 *(1 -1/3 +1/5 -1/7 +1/9 -1/11 +1/13).

在程序中使用1.0代替1。

输入格式:

输出格式:

算式的值

输入样例:

在这里给出一组输入。例如:

 

输出样例:

在这里给出相应的输出。例如:

3.2837384837384844

参考答案:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        double ans = 4 * (1 - 1.0 / 3 + 1.0 / 5 - 1.0 / 7 + 1.0 / 9 - 1.0 / 11 + 1.0 / 13);
        System.out.printf("%.16f", ans);
    }
}

7-19 jmu-Java-02基本语法-05-浮点数的精确计算

输入若干对浮点数,对每对浮点数输出其精确的和与乘积。
以下输入样例为两对浮点数输入,实际上有可能有不定对数的浮点数需要输入计算。

注1:直接使用double类型数据进行运算,无法得到精确值。
注2:输出时直接调用BigDecimal的toString方法。

输入样例:

69.1 0.02
1.99 2.01

输出样例:

69.12
1.382
4.00
3.9999

参考答案:

import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String a, b;
        while (reader.hasNext()) {
            a = reader.next();
            b = reader.next();
            BigDecimal A = new BigDecimal(a);
            BigDecimal B = new BigDecimal(b);
            System.out.println(A.add(B));
            System.out.println(A.multiply(B));
        }
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值