这是码神Android第三次课程内容,主要讲了浮点类型、char类型的一些基础知识

上次由于塞车让老师和同学们等了半个多钟才到,真的非常抱歉。。以后会尽量提前过去的。

心得总结:

1、浮点类型float::4个字节32位,1位符号位,8位指数位,23位尾数

2、浮点类型double: 8个字节64位,1位符号位,11位指数位,52位尾数

3、整数类型都是1位符号位其他位都是尾数

4、由于浮点类型有指数位的概念,故相比与同字节的整型数所表达的范围要广

5、由于浮点类型尾数位较少,故相比与同字节的整型数所表示的精确度要低

6、java中,默认的整型数为int类型,默认的浮点数为double类型

7、char类型:2字节     String类型为引用类型

8、转义字符:'\n'回车, '\t'制表符, '\\'反斜杠, '\''单引号, '\"'双引号

9、ASCII码:共127个字符,包括大小写字母和数字1-9和其他各种特殊字符,其中65表示'A',97表示'a'

10、Unicode编码:包含世界上各国语言文字字符,同时包含ASCII码所有字符,是ASCII的超集,共8万多种字符

11、Integer.toBinaryString(int:):将10进制数转化为2进制表达形式,返回字符串

12、System.currentTimeMillis():获取当前系统时间的毫秒表示数,常用来计算时间差或获取随机数

13、myeclipse操作:ctrl+D可以删除一行

14、分页读取数据: 类似于淘宝商品浏览, 只显示比较主要的一些信息在第一页显示,其他数据不读取,等到翻页的时候再进行读取显示,这样有利于节省内存,提高速度。

课堂作业:

编写程序,将浮点型数转换成人民币读法,如1006.33转换成(中文大写)壹仟零陆元叁角叁分

运行效果截图如下:

        

       

      

代码如下:

package com.mashen;import javax.swing.JOptionPane;/*
2. * @Description:这是一个能将消息对话框输入的一个数字转换成人民币读法的一个类
3. * @author: HongXin
4. * @date: 2016/5/20
5. * @version: 2.0
6. */  public class ChangeToRmb_1 {public static void main(String[] args) {// 显示对话框提示输入数字,并获取输入的数字的字符串形式String inputValue = JOptionPane.showInputDialog("请输入一个不超过9位数的数字:");//调用change类中的changeType方法得到结果并将结果赋值给字符串aChangeToRmb_1 ca = new ChangeToRmb_1();String a = ca.changeType(inputValue);// 弹出对话框显示处理结果JOptionPane.showMessageDialog(null, inputValue + "\n转化为人名币读法为:\n" + a,"系统信息", JOptionPane.INFORMATION_MESSAGE);}/** 此方法将传入的数转换成人民币读法* @param:(String)* @return:(String)返回结果是"fString"*/public String changeType(String inputValue) {// 把数字赋值于a变量double a = 0;//判断输入的是否为数字,否则将抛出提示信息“请输入数字!”try {a = Double.parseDouble(inputValue);} catch (Exception e) {JOptionPane.showMessageDialog(null, "请输入数字!", "系统信息",JOptionPane.INFORMATION_MESSAGE);System.exit(0);}int digit;// digit表示位数long s = 10;/** 判断位数大小*/for (digit = 0; digit < 100; digit++) {if (a / s == 0) {break;} else if (a / s < 1) {digit++;break;}s *= 10;}// 输出输入的位数System.out.println("输入的数为:"+inputValue+"\t"+digit + "位数");// theMaxIndex代表最高位所在的下标int theMaxIndex = 12 - digit;// 求得每一位上的数字a *= 1000;long b = (long) (a);int fen = (int) (b / 10 % 10);// 求得分位上的数int jiao = (int) (b / 100 % 10);// 求得角位上的数int yuan = (int) (b / 1000 % 10);// 求得个位上的数int shi = (int) (b / 10000 % 10);// 求得十位上的数int bai = (int) (b / 100000 % 10);// 求得百位上的数int qian = (int) (b / 1000000 % 10);// 求得千位上的数int wan = (int) (b / 10000000 % 10);// 求得万位上的数int shiwan = (int) (b / 100000 / 1000 % 10);// 求得十万位上的数int baiwan = (int) (b / 1000000000 % 10);// 求得百万位上的数int qianwan = (int) (b / 1000000 / 10000 % 10);// 求得千位位上的数int yi = (int) (b / 1000000 / 100000 % 10);// 求得亿位上的数int shiyi = (int) (b / 10000000 / 100000 % 10);// 求得十亿位上的数int baiyi = (int) (b / 10000000 / 1000000 % 10);// 求得百亿位上的数int qianyi = (int) (b / 10000000 / 10000000 % 10);// 求得千亿位上的数// int数组:number[]:存储从亿位到分位上的数int[] number = { qianyi,baiyi,shiyi,yi, qianwan, baiwan, shiwan, wan, qian, bai, shi,yuan, jiao, fen };// String数组:numberString:以大写形式存储数组number[]的元素String[] numberString = new String[14];// String数组:digitName:存储位名String[] digitName = { "仟", "佰", "拾", "", "仟", "佰", "拾", "", "仟", "佰","拾", "", "角", "分" };String[] nStrings = { "零", "壹", "贰", "叄", "肆", "伍", "陆", "柒", "捌", "玖" };/** 将number[]中数字转化为大写形式,存储到numberString[]中*/System.out.println("数字和位名结合如下:");for (int k = 0; k < 14; k++) {for (int j = 0; j < 10; j++) {if (number[k] == j) {numberString[k] = nStrings[j];}}System.out.print(numberString[k]+digitName[k]);}System.out.println();// String数组:Strings1:初步将数字与位数相结合String[] strings1 = new String[40];// 初始化Strings1数组for (int j = 0; j < strings1.length; j++) {strings1[j] = "";}int p = 0;/** 从最高位开始循环* 将数字与位名相结合并一一存放在Strings1数组 * 若数字为零,则只传入数字,不传入位名* 亿位、万位、个位区别对待* */for (; theMaxIndex < numberString.length; theMaxIndex++) {// 若最高位为亿位及以上,将亿位上的数字传入Strings1数组 ,再另外传位名“亿”if (theMaxIndex == 3&&(number[0] != 0 || number[1] != 0 || number[2] != 0 || number[3] != 0)) {strings1[p] = numberString[theMaxIndex];p++;// 另外传位名“亿”strings1[p] = "亿";p++;} // 若最高位在万位及以上,则循环到万位时将万位上的数字传入Strings1数组 ,再另外传位名“萬”else if (theMaxIndex == 7&& (number[0] != 0 || number[1] != 0 || number[2] != 0|| number[3] != 0 || number[4] != 0|| number[5] != 0 || number[6] != 0|| number[7] != 0 )) {strings1[p] = numberString[theMaxIndex];p++;// 另外传位名“萬”if (number[4] != 0 || number[5] != 0 || number[6] != 0|| number[7] != 0) {strings1[p] = "萬";p++;}}// 若最高位在个位及以上,则循环到个位时将个位上的数字传入Strings1数组 ,再另外传位名“圆”else if (theMaxIndex == 11&& (number[0] != 0 || number[1] != 0 || number[2] != 0|| number[3] != 0 || number[4] != 0|| number[5] != 0 || number[6] != 0|| number[7] != 0 || number[8] != 0 || number[9] != 0|| number[10] != 0 || number[11] != 0)) {strings1[p] = numberString[theMaxIndex];p++;strings1[p] = "圆";p++;} // 若最高位比个位低,则个位的数字和位名将不传入Strings1数组else if (theMaxIndex == 11 && number[11] == 0) {} // 以上几种情况之外,若某位上数字为0,则该位名不传入数组,只传数字“零”else if (numberString[theMaxIndex] == "零") {digitName[theMaxIndex] = "";if (theMaxIndex != 12) {strings1[p] = numberString[theMaxIndex];p++;}}// 其他情况,直接传数字和位名入数组Strings1else {strings1[p] = numberString[theMaxIndex];p++;strings1[p] = digitName[theMaxIndex];p++;}}/** 在控制台输出Strings1[]数组*/System.out.print("Strings1:");for (int j = 0; j < strings1.length; j++) {System.out.print(strings1[j]);}System.out.println();/** Strings数组中,相邻两个及以上所有的零,只保留第一个零,其他的零转换为"口"*/for (int j = 0; j < strings1.length; j++) {if (strings1[j] == "零") {if (strings1[j + 1] == "零") {if (strings1[j + 2] == "零") {if (strings1[j + 3] == "零") {if (strings1[j + 4] == "零") {if (strings1[j + 5] == "零") {if (strings1[j + 6] == "零") {if (strings1[j + 7] == "零") {if (strings1[j + 8] == "零") {if (strings1[j + 9] == "零") {if (strings1[j + 10] == "零") {strings1[j + 10] = "口";}strings1[j + 9] = "口";}strings1[j + 8] = "口";}strings1[j + 7] = "口";}strings1[j + 6] = "口";}strings1[j + 5] = "口";}strings1[j + 4] = "口";}strings1[j + 3] = "口";}strings1[j + 2] = "口";}strings1[j + 1] = "口";}}}// 输出转换为“口”后的strings1System.out.print("Strings1:");for (int j = 0; j < strings1.length; j++) {System.out.print(strings1[j]);}/**  创建一个数组strings2作为最后的结果输出,并初始化该数组*/String[] strings2 = new String[40];for (int j = 0; j < strings2.length; j++) {strings2[j] = "";}/** 将strings1中除了“口”元素外的其他元素一一传入strings2数组中*/int n = 0;for (int j = 0; j < strings1.length; j++) {if (!strings1[j].equals("口") ) {strings2[n] = strings1[j];n++;}}// 输出strings2数组System.out.println();System.out.print("strings2:");for (int j = 0; j < strings2.length; j++) {System.out.print(strings2[j]);}/** 完善strings2数组* 除去不合理的“零”* 除去一些其他的bug* */for (int j = 0; j < strings2.length; j++) {// 去除如:1000000000显示"壹拾零亿"的bugif (strings2[j].equals("亿")) {if (strings2[j - 1].equals("零")) {strings2[j - 1] = "";}}// 去除如:100000显示"壹拾零萬"的bugif (strings2[j].equals("萬")) {if (strings2[j - 1].equals("零")) {strings2[j - 1] = "";}}/** 去除如:10显示"壹拾零圆"的bug* 去除如:1.00显示"壹圆零"的bug*/if (strings2[j].equals("圆")) {if (strings2[j - 1].equals("零")) {strings2[j - 1] = "";}if (strings2[j + 1].equals("零")) {strings2[j + 1] = "";}}/** 去除如:0.10显示"壹角零"的bug*/if (strings2[j].equals("角")) {if (strings2[j - 1].equals("零")) {strings2[j - 1] = "";}if (strings2[j + 1].equals("零")) {strings2[j + 1] = "";}}//         若没有角位和分位,直接在后面加整,例如“十元整”
//          if (strings2[j].equals("圆")) {
//
//              if (strings2[j + 1].equals("")) {
//                  strings2[j + 1] = "整";
//              }
//
//
//          }}/** 输出最后的结果*/System.out.println();System.out.print("strings2:");String fString = "";for (int j = 0; j < strings2.length; j++) {fString =fString+""+strings2[j];System.out.print(strings2[j]);}// 返回最终结果字符串return fString;}}

纯手打原创!

#码神心得_03# 浮点类型、char类型相关推荐

  1. char类型与字符编码

    本文要点: java的内码为UTF-16: char类型无法处理所有的字符,String的length方法和charAt方法也无法处理所有的字符: MySQL中,使用utf8编码的表无法存储表情,需要 ...

  2. 初识C语言之详解char类型

    文章目录 一.预备知识 二.char类型 三.声明与初始化 1.声明 2.字符常量和初始化 3.非打印字符 一.预备知识 字符的定义:字符指类字形单位或符号,包括字母.数字.运算符号.标点符号和其他符 ...

  3. C++ char类型

    C++ char类型 char类型也是一种整型,他是专门用于存储字符(如 字母和数字)而设计的.存储程序对于计算机而言很容易,但是存储字母就是另一回事了,当然,后来便用字母的数值编码解决了.最常用的符 ...

  4. MySQL——VARCHAR和CHAR类型

    前述 VARCHAR和CHAR是两种最主要的字符串类型.不幸的是,很难精确地解释这些值是怎么存储在磁盘和内存中的,因为这跟存储引擎的具体实现有关.下面的描述假设使用的存储引擎是InnoDB和/或者My ...

  5. 浅谈char类型范围

    在 C 语言中, signed char 类型的范围为 -128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是 -128~127,这个问题貌似看起来也很简单容易, 以 ...

  6. 浅析为什么char类型的范围是 —128~+127

    在C语言中, signed char 类型的范围为-128~127,每本教科书上也这么写,但是没有哪一本书上(包括老师)也不会给你为什么是-128~127,这个问题貌似看起来也很简单容易, 以至于不用 ...

  7. char类型怎么输入 c语言_C语言零基础入门到精通视频课程(精品)

    C语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...

  8. 8位alu运算器(vhdl语言)_C语言中signed char类型,能表示-128到127,为什么负数多一位?...

    初学者在学习C语言,谈到不同数据类型时,一般都能理解 unsigned 和 signed 的区别,无非就是有无符号而已.但是对于 signed 数据类型的数据范围,初学者却常常会感到迷惑. 对于 si ...

  9. C语言基础(6)-char类型

    1. char常量.变量 使用单引号''引起来的就是char的常量 'a'是一个char类型的常量 "a"是一个字符串类型的常量 1是一个int型的常量 '1'是一个char型的常 ...

最新文章

  1. java rpm_Java JDK rpm安装与配置
  2. jQuery ajax contentType processData 笔记
  3. C++ 设计员工类(Employee)
  4. Linux下配置DNS服务器之一--Master服务器
  5. mysql 查询语句_MySQL相关(一)- 一条查询语句是如何执行的
  6. Internal Server Error - http code 500
  7. 需求评审会议上,被逼疯的程序员
  8. 2048游戏代码python_200 行代码实现简易版 2048 游戏 (python)
  9. osgb转obj工具_在ArcGIS Pro中OSGB数据转换及发布服务流程
  10. answer的汉语_大概是几乎能满足你们所有要求的两所学校(汉语言文字学、语言学及应用语言学择校攻略)...
  11. Fragment标签页+OKHttp网络请求数据+MVP模式
  12. Excel-工作周报(月报)【改良版】
  13. 入门masm32编写简单汇编程序并做具体分析
  14. win+ubuntu双系统卸载ubuntu
  15. WPS 2019解决不能启用宏问题
  16. 解决Win10系统过期失效问题的经验总结
  17. linux下获取按键响应事件(转)
  18. pd.read_csv()中文乱码,解决方法
  19. 计算机学习入门指北——计科软工网络信安侧重图析、解读专业术语、岗位分类、未来规划
  20. 贪心法 第1关:找零钱

热门文章

  1. 春节期间,怎样晒朋友圈才安全?
  2. PyTorch(二次元头像--GAN实战)
  3. IOS使用高德地图获取当前位置信息
  4. 计算机科学关于人工智能的论文,人工智能论文
  5. 为什么总是黑php,怎么都在黑PHP?
  6. 重新加载script
  7. blender 制作城市建筑模型
  8. 一个dsp最小系统至少要有_DSP最小系统设计方案
  9. 【算法刷题日记之本手篇】左右最值最大差与顺时针打印矩阵
  10. Intel傲腾存储黑科技终极版:DIMM内存条明年到来