Java动手实验及课后程序

摘要:
课后作业1。编写程序以显示消息框的计算结果。设计思路:导入Scanner包,使用JOptionPane类实现消息框的输入和结果的显示。此外,浮点运算中的误差累积会导致浮点运算不准确。

课后作业

一、编写程序,消息框显示计算结果

设计思想:导入Scanner包,使用JOptionPane类来实现消息框的输入和结果的显示。

程序代码:

package com;

import java.util.Scanner;

//导入Scanner

import javax.swing.JOptionPane;

public class Manner {

public static void main(String[] args){

Scanner in=new Scanner(System.in);

//定义Scanner

int a,b;

String s1,s2;

s1 =JOptionPane.showInputDialog( "Enter first integer" );

s2=JOptionPane.showInputDialog( "Enter second integer" );

//输入两个整数

a= Integer.parseInt( s1 ); 

    b= Integer.parseInt( s2 );

    //String类型两个数据的转换成整型的两个数据进行运算      JOptionPane.showMessageDialog(

null,"两个整数的和为:"+(a+b));

JOptionPane.showMessageDialog(

null,"两个整数的差为:"+(a-b));

JOptionPane.showMessageDialog(

null,"两个整数的积为:"+(a*b));

JOptionPane.showMessageDialog(

null,"两个整数的商为:"+(a/b));

in.close();

}

}

结果截图:

Java动手实验及课后程序第1张Java动手实验及课后程序第2张Java动手实验及课后程序第3张Java动手实验及课后程序第4张Java动手实验及课后程序第5张Java动手实验及课后程序第6张

二、动手动脑

一、(1)仔细阅读示例: EnumTest.java,运行它,分析运行结果?

答:运行结果为:true  SMALL  MEDIUM  LARGE,在判断了是否引用了同一个对象之后,利用枚举的方式输出数组的数据。

(2)你能得到什么结论?你掌握了枚举类型的基本用法了吗?

答:枚举类型输入的是字符串类型,输出的是字符串类型,它不属于原始数据类型,是引用类型,所以可以使用“==”和equals()方法比对变量的值。

二、数值的二进制表示

1、原码:表示方式是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。

2、反码:表示方式是正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余各个位取反。所以如果一个反码表示的是负数,人脑无法直观的看出来它的数值,通常要将其转换成原码再计算。

3、补码:表示方式是正数的补码就是其本身;负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1(即在反码的基础上+1)。对于负数,补码的表示方式也是人脑无法直观看出其数值的,通常也需要转换成原码再计算其数值。

4、Java中的数是采用补码表示的。

三、

 Java动手实验及课后程序第7张

看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?

答:char 8位二进制数范围是-27次方到27次方-1byte 8位带符号整数-128127之间的任意整数,short 16位无符号整数-3276832767之间的任意整数,int 32位带符号整数-231次方到231次方-1之间的任意整数,long 64位带符号整数-263次方到263次方-1之间的任意整数,float 32位单精度浮点数,double 64位双精度浮点数。

结论是:Java会自动完成从低级类型向高级类型转换,即取值范围相对较小的数据类型转换成取值范围相对较大的数据类型。

四、请运行以下代码(TestDouble.java),你看到了什么样的输出,意外吗?

答:0.05 + 0.01 = 0.060000000000000005

1.0 - 0.42 = 0.5800000000000001

4.015 * 100 = 401.49999999999994

123.3 / 100 = 1.2329999999999999

结果都是不精确的,不是数学范围内的精确结果,因为double型是浮点数类型,存在精度问题。

五、为什么double类型的数值进行运算得不到“数学上精确”的结果?

答:double类型是双精度浮点数,由符号位、阶码、尾数三部分组成,符号位决定浮点数的正负,指数和尾数均从浮点数的二进制科学计数形式中获取,根据浮点数的存储标准IEEE制定,double类型指数的起始数为1023,在此基础上加指数,得到的就是内存中指数的表示形式,尾数则直接填入,空间多余则以0补齐,如果空间不够则01入。因为用二进制无法精确表示,所以double不是很精确。计算机中是用有限的连续字节保存浮点数的,很多小数根本无法在二进制计算机中精确表示,由于浮点数尾数域的位数是有限的,为此,浮点数的处理办法是持续该过程直到由此得到的尾数足以填满尾数域,之后对多余的位进行舍入。换句话说,除了之前讲到的精度问题外,十进制到二进制的变换也并不能保证总是精确的,而只能是近似值。事实上,只有很少一部分十进制小数具有精确的二进制浮点数表达。再加上浮点数运算过程中的误差累积,结果就会出现浮点运算的不准确问题。

六、(1)以下代码的输出结果是什么?

int X=100;

int Y=200;

System.out.println("X+Y="+X+Y);

System.out.println(X+Y+"=X+Y");

结果为:X+Y=100200   300=X+Y

(2)为什么会有这样的输出结果?

答:因为String类型的变量加上其他任何基本类型的变量都将被当做字符串处理。而输出的第一条语句里面X+Y没有用括号括起来,就成了字符串,加号的作用就成了拼接字符串,所以输出的是100200;而输出的第二条语句X+Y放在最前面,不需要括号,所以加号是求和的作用。

免责声明:文章转载自《Java动手实验及课后程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MCI:移动持续集成在大众点评的实践[读书笔记] Python 数据分析 (十一)经济和金融数据应用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

csrf攻击原理和防御-生成token防御代码

前言 CSRF(Cross-site request forgery,跨站请求伪造,恶意网站伪造身份冒充你向目标服务器发送请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。 攻击原理 csrf攻击通过利用浏览器机制:发送请求的域相同时,浏览器会自动携带相...

温故知新-网络基础1-ip地址计算

网络地址换算 1、网络地址分类 A类:0.0.0.0到127.255.255.255   255.0.0.0/8   B类:128.0.0.0到191.255.255.255   255.255.0.0/16 C类:192.0.0.0到223.255.255.255  255.255.255.0/24 D类:224.0.0.0到239.255.255.25...

HOOK技术的一些简单总结

好久没写博客了, 一个月一篇还是要尽量保证,今天谈下Hook技术。 在Window平台上开发任何稍微底层一点的东西,基本上都是Hook满天飞, 普通应用程序如此,安全软件更是如此, 这里简单记录一些常用的Hook技术。 SetWindowsHookEx 基本上做Windows开发都知道这个API, 它给我们提供了一个拦截系统事件和消息的机会, 并且它可...

2.1.1优化程序性能

性能优化有三个层次: 系统层次 算法层次 代码层次 系统层次关注系统的控制流程和数据流程,优化主要考虑如何减少消息传递的个数;如何使系统的负载更加均衡;如何充分利用硬件的性能和设施;如何减少系统额外开销(比如上下文切换等)。 算法层次关注算法的选择(用更高效的算法替换现有算法,而不改变其接口);现有算法的优化(时间和空间的优化);并发和锁的优化(增加任务的...

C# 虚拟键盘核心方法 Tech

C# SendKeys.Send(转) 将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。 语法 SendKeys string[, wait] SendKeys 语句的语法具有以下几个命名参数: 部分 描述 string 必需的。字符串表达式,指定要发送的按键消息。 Wait 可选的。指定等待方式的 BooleandefBooleanDa...

matlab文件操作

matlab文件操作 1、文件的打开与关闭(fopen与fclose) 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,“打开方式”) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。 文件名用字符串形式,表示待打开的...