Java动手实验及课后程序
课后作业
一、编写程序,消息框显示计算结果
设计思想:导入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动手实验及课后程序的更多相关文章
- java动手动脑和课后实验型问题String类型
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...
- java动手动脑和课后实验型问题
1.以下代码的输出结果是什么?为什么会有这个结果? int[] a = { 5, 7, 20 }; System.out.println("a数组中的元素:"); // 循环输出a ...
- java动手动脑和课后实验型问题第四讲
1.完全"手写代码实现"随机数生成 动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Mult ...
- JAVA动手动脑及课后作业
1.查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 运行结果 true true false 原因 1)在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0, ...
- Java简单实验--关于课后提到的java重载函数的简单分析
根据这一小段代码,获得了以下的测试截图: 简单分析:根据输出结果,判断这段代码用到了两个不同的函数方法,输出的不止有double类型的数,还有整型的数. 又根据类中的定义情况,square是根据判断传 ...
- 2019-9-16 java上课知识整理总结(动手动脑,课后实验)
java上课知识整理总结(动手动脑,课后实验) 一,课堂测试 1,题目:课堂测试:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求:(1)题目避免重复: (2)可定制( ...
- JAVA 数组作业——动手动脑以及课后实验性问题
JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...
- java动手动脑和动手实验
动手动脑一: EnumTest.java: 程序代码: public class EnumTest { public static void main(String[] args) { Size s= ...
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
随机推荐
- 2.C#基础篇-->数据类型
C#数据类型分为:值类型,引用类型和指针类型(仅在不安全代码中使用) 1.值类型. 值类型包含:简单类型(整型,浮点类型和小数类型),枚举类型和结构类型.所有值类型都隐含的声明一个公共的无参构造函数, ...
- Spring MVC 学习笔记 data binding
最近在实验Spring的时候遇到了一个问题: SEVERE: Servlet.service() for servlet [DispatcherServlet] in context with ...
- 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- C# 天气预报
问题描述: 使用C#做一个简易的天气预报系统 问题解决: 主要使用类如下: WeatherLoc:包含常用的调用中国气象局天气情况接口 using System; using System.Colle ...
- Hdu 1429 胜利大逃亡(续) 分类: Brush Mode 2014-08-07 17:01 92人阅读 评论(0) 收藏
胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Subm ...
- 输出string vector到file
#include <fstream> #include <iterator> #include <string> #include <vector> i ...
- 9 I/O复用
I/O复用使得程序能够同时监听多个文件描述符,适用于以下情况: 客户端同时处理多个socket,比如非阻塞connect 客户端同时处理用户输入和网络连接,比如聊天室程序 TCP服务器同时处理监听so ...
- html之colspan && rowspan讲解
1.colspan && rowspan均在td标签中使用 2.每个单元格大小一致的前提 <table border="1" bordercolor=&quo ...
- 电信SDK Pay函数里面System.out.print 无输出消息
private void Pay(HashMap<String, String> payParams){ System.out.print("----------Pay Dian ...
- ExtJs之字段集FieldSet
//Ext.form.FieldSet扩展自Ext.container.Container.其优点就是把相同字段集中在一起,在外面字段外面加了个线"围住"他们. // ...