课后作业

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

设计思想:导入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. ip地址转化代码实例

    /*@author: lgh@ * * */ #include <stdio.h> #include <string.h> #include <unistd.h> ...

  2. SqlServer Split函数

    Create FUNCTION [dbo].[SplitToTable] ( @SplitString nvarchar(max), @Separator nvarchar(10)=' ' ) RET ...

  3. 【CentOs】开机启动与防火墙

    说明: 开机启动使用的命令式chkconfig .防火墙相关的命令式iptables 1.chkconfig 2.iptables 1.chkconfig 参数: --add   新增所指定的系统服务 ...

  4. 系统集成之用户统一登录( LDAP + wso2 Identity Server)

    本文场景: LDAP + wso2 Identity Server + asp.net声明感知 场景 ,假定读者已经了解过ws-*协议族,及 ws-trust 和 ws-federation. 随着开 ...

  5. Guid和Int还有Double、Date的ToString方法的常见格式

    Guid的常见格式: 1.Guid.NewGuid().ToString("N") 结果为:       38bddf48f43c48588e0d78761eaa1ce6 2.Gu ...

  6. 常用的CSSreset整理

    说道CSSreset,大家又爱又恨,cssreset好处是,覆盖了浏览器的默认样式,使前端攻城狮能更加精确的添加样式,各个浏览器中的界面效果都相同.可是大量的.固定的CSSreset也给网页加载带来一 ...

  7. SQL Server 2008连接字符串写法大全{转}

    一..NET Framework Data Provider for SQL Server 类型:.NET Framework类库使用:System.Data.SqlClient.SqlConnect ...

  8. UnityException: Texture is not readable

    原地址:http://blog.csdn.net/emoonight/article/details/18002913 fore you can save or load a Texture, you ...

  9. AIZU 2251

    Merry Christmas Time Limit : 8 sec, Memory Limit : 65536 KB Problem J: Merry Christmas International ...

  10. Android ListVIew 详解(一)

    在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.抽空把对ListView的使用做了整理,并写了个小例子,如下图. 列表的显示需要三 ...