课后作业

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

设计思想:导入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();

}

}

结果截图:

二、动手动脑

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

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

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

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

二、数值的二进制表示

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

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

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

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

三、

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

答:char 8位二进制数范围是-2的7次方到2的7次方-1,byte 8位带符号整数-128到127之间的任意整数,short 16位无符号整数-32768到32767之间的任意整数,int 32位带符号整数-2的31次方到2的31次方-1之间的任意整数,long 64位带符号整数-2的63次方到2的63次方-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补齐,如果空间不够则0舍1入。因为用二进制无法精确表示,所以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动手实验及课后程序的更多相关文章

  1. java动手动脑和课后实验型问题String类型

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...

  2. java动手动脑和课后实验型问题

    1.以下代码的输出结果是什么?为什么会有这个结果? int[] a = { 5, 7, 20 }; System.out.println("a数组中的元素:"); // 循环输出a ...

  3. java动手动脑和课后实验型问题第四讲

    1.完全"手写代码实现"随机数生成 动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Mult ...

  4. JAVA动手动脑及课后作业

    1.查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 运行结果 true true false 原因 1)在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0, ...

  5. Java简单实验--关于课后提到的java重载函数的简单分析

    根据这一小段代码,获得了以下的测试截图: 简单分析:根据输出结果,判断这段代码用到了两个不同的函数方法,输出的不止有double类型的数,还有整型的数. 又根据类中的定义情况,square是根据判断传 ...

  6. 2019-9-16 java上课知识整理总结(动手动脑,课后实验)

    java上课知识整理总结(动手动脑,课后实验) 一,课堂测试 1,题目:课堂测试:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求:(1)题目避免重复: (2)可定制( ...

  7. JAVA 数组作业——动手动脑以及课后实验性问题

    JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...

  8. java动手动脑和动手实验

    动手动脑一: EnumTest.java: 程序代码: public class EnumTest { public static void main(String[] args) { Size s= ...

  9. JAVA语法基础作业——动手动脑以及课后实验性问题 (八)

    一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...

随机推荐

  1. 项目前端技术-learn

    赶鸭子上架 之 前端学习 目前项目中的前端用到的技术主要是:1. bootstrap框架; 2. 基于javscript的jQuery, jQuery ui; 3. dust前端模板引型.

  2. R 实例1

    //转载:http://www.r-china.net/forum.php?mod=viewthread&tid=881&extra=page%3D1//用R抓取人民日报网数据 lib ...

  3. fiddler 代理不成功调试

    按照 http://jingyan.baidu.com/article/03b2f78c7b6bb05ea237aed2.html 设置. 之前可以用, 现在不能用. 1. 关闭 系统防火墙 2. 换 ...

  4. UML活动图(转载)

    概述: 活动图是另一个重要的UML图来描述系统的动态方面. 活动图基本上是代表流程形成一个活动到另一个活动的流程图.活动可以被描述为一个系统的操作. 因此,绘制控制流从一个操作到另一个.此流可以是连续 ...

  5. magic_quotes_runtime 与 magic_quotes_gpc

    magic_quotes_runtime 与 magic_quotes_gpc 这两个函数都是管理是否对数据进行特殊符号转义,但是他们针对的处理对象不同: magic_quotes_gpc的设定值将会 ...

  6. 【QT】找茬外挂制作

    找茬外挂制作 找茬游戏大家肯定都很熟悉吧,两张类似的图片,找里面的不同.在下眼神不大好,经常瞪图片半天也找不到区别.于是乎决定做个辅助工具来解放一下自己的双眼. 一.使用工具 Qt:主要是用来做界面的 ...

  7. POJ 1477

    #include <iostream> #define MAXN 100 using namespace std; int _[MAXN]; int main() { //freopen( ...

  8. LoaderManager使用详解(一)---没有Loader之前的世界

    来源: http://www.androiddesignpatterns.com/2012/07/loaders-and-loadermanager-background.html 感谢作者Alex ...

  9. 测试in和or的执行时间

    declare @d datetime set @d=getdate() /*你的SQL脚本开始*/ SELECT * FROM T_KNOWLEDGE WHERE KNOWLEDGE_TYPE_OI ...

  10. HADOOP NAMENODE对Image和edits的处理

    1.SNN CheckPoint的处理流程 配置中配置做CheckPoint的两个条件,一个是文件大小editlog大于多大就做,另一个是时间维度,多长时间做一次. (1)SNN首先检查是否需要进行c ...