二、Scanner类

有C系语言基础的可能都比较熟悉scanf("%d",&a);和cin>>a;这种代码,也打开了程序交互的第一道门。因此,这些程序员开始学Java时都会先找输入输出(指标准输入输出),Java的输出就非常常见,任何一个Java教程基本都是以输出开始的,然而输入却在很后面提到,因为Java的输入不似输出那么简单。现在我们就来介绍一下实现输入的Scanner类。

1.Scanner基本使用方法和next()系列方法

一个从键盘输入的基本示例:

import java.util.Scanner;

public class Scan {
public static void main(String []args)
{
Scanner sc=new Scanner(System.in);
String s=sc.next();
System.out.println(s);
}
}

绿色的输入,以回车结束,而白色的是输出,可以看出next()方法只能读取空格前的字符串,想要读取空格,可以使用nextLine()方法:

        String s=sc.nextLine();

此外,还有nextInt()、nextLong()等除Charater之外的包装类输入,还有nextBigDecimal()和BigInteger等大数类。以Integer为例:

        Integer s= sc.nextInt();

如果你输入的不是integer类型,则会抛出如下异常

当然,Integer可以转Float。

2.hasNext()系列方法

        while(sc.hasNext()) {
String s = sc.next();
if(s.equals("exit"))
break;
else
System.out.println(s);

所以Scanner类基本没有什么内容了,就结束吧!

三、Java大数类

1.BigInteger

大整数,还能记得之前博客"Java-20180409"中稍微涉及到BigInteger的使用,当时算法所测试的数极大,超过long的最大值,因此引出BigInteger,虽然简单,但基本内容齐全。int类型的取值范围是-2*32到2^32-1

        System.out.println(Integer.MAX_VALUE-Math.pow(2,31));
System.out.println(Integer.MIN_VALUE+Math.pow(2,31));

结果分别是-1.0和0.0。同理long的大小范围是-2^63到2^63之间。

而BigInteger是通过int数组联合来存储比特位,但是BigInteger并未重载常用的+-*/%等符号(不知道Java是否可以),因此我们必须采用成员方法的方式进行加减乘除操作,在此之前必须要介绍一下构造函数,BigInteger的构造函数非常多,大概八九种吧,咱们找常见的介绍一下:

import java.math.BigInteger;

public class Big {
public static void main(String []args)
{
BigInteger bi=new BigInteger("63333333333333333333");
System.out.println(bi);
BigInteger b2=BigInteger.valueOf(3333333333333333333l);
System.out.println(b2);
System.out.println(bi.add(b2));
}
}

好像最常用的就是String为参数。。。。

        System.out.println(bi.subtract(b2));
System.out.println(bi.multiply(b2));
System.out.println(bi.divide(b2));
BigInteger [] i= bi.divideAndRemainder(b2);
System.out.println(i[0]);
System.out.println(i[1]);

以上结果分别为减乘除以及求商和余数的操作(返回BigInteger数组含有两个元素,第一个是商,第二个是余数)。

此外,常用的操作可能还有:

2.BigDecimal

BigInteger是为了存储大整数,而BigDecimal则是为了存储大且精的浮点数,还是先来看一下构造函数,主要有String和double两种类型,而加减乘操作也类似于BigInteger;我们重点关注除法:

        BigDecimal bd=new BigDecimal(1.0);
BigDecimal d2=new BigDecimal("3.2");
System.out.println(bd.divide(d2));
System.out.println(bd.divide(d2,3,BigDecimal.ROUND_UP));

第一种是普通除法,但是结果不能是无限小数,否则抛出异常!

第二种就是更方便的除法,第二个参数是保留位数,第三个是如何舍入,比如上述例子中就是保留三位小数,但是向上进位。即整数趋向正无穷,负数趋向负无穷。

还有ROUND_DOWN总是舍去后面的数位,即趋向0;ROUND_CEILING向上取值,永远趋向正无穷。;ROUND_FLOOR向下取值,永远趋向负无穷;ROUND_HALF_DOWN四舍五入操作,若小于等于5舍弃,大于5进位操作;ROUND_HALF_UP四舍五入操作,小于5舍弃,大于等于5进位;ROUND_HALF_EVEN银行家舍入,银行家舍入有一个口诀:

四舍六入五考虑,五后非空就进一,五后为空看奇偶,五前为偶应舍去,五前为奇要进一

即当最后一位为5时,总是要保证舍入后为偶数:

        BigDecimal bd=new BigDecimal(1.0);
BigDecimal d2=new BigDecimal("4.0");
// System.out.println(bd.divide(d2));
System.out.println(bd.divide(d2,1,BigDecimal.ROUND_HALF_EVEN));
BigDecimal d3=new BigDecimal(3.5);
BigDecimal d4=new BigDecimal("10.0");
System.out.println(d3.divide(d4,1,BigDecimal.ROUND_HALF_EVEN));

上述程序结果分别为0.25和0.35,因此保留一位小数最后的结果是:

四、Random类

Java常用类(二) Scanner类和大数类的更多相关文章

  1. Java 反射(二)运行时获取类的信息

    目录 一.获得类的运行时结构 1. 获得类的名字 2. 获得类的属性 获取属性列表 获取指定属性 3. 获取类的方法 获得类的方法列表 获得指定方法 4. 获得的构造器 获得构造器列表 获得指定构造器 ...

  2. Java从零开始学二十四(集合工具类Collections)

    一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...

  3. GOF 的23种JAVA常用设计模式总结 02 UML中的类图与类图之间的关系

    统一建模语言UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际 ...

  4. java 常用类库:格式化NumberFormat;SimpleDataFormat类(转换Data()对象);DateTimeFormatter 转换LocalDateTime时间对象

    NumberFormat类 该类是一个做数字格式化的类,它是一个抽象类,无法实例化.它提供了parse()和format()方法,其中format用于将数值,格式转化成字符串,parse()用于把字符 ...

  5. java 常用类库:String ; StringBuilder和StringBuffer类

    1. String 1.String对象是不可变的 String类的value属性是用来存放字符串里面的值的.这个属性是被final修饰的.final修饰的变量不能够被第二次赋值,所以字符串是不可变的 ...

  6. Util应用程序框架公共操作类(二):数据类型转换公共操作类(源码篇)

    上一篇介绍了数据类型转换的一些情况,可以看出,如果不进行封装,有可能导致比较混乱的代码.本文通过TDD方式把数据类型转换公共操作类开发出来,并提供源码下载. 我们在 应用程序框架实战十一:创建VS解决 ...

  7. Java常用类库(二):Iterator迭代器和子范围视图

    今天介绍集合类的以下内容: l  Iterator迭代器 l  子范围视图简介 Iterator迭代器: 应该将java迭代器认为是位于两个元素之间, 当调用next 时,迭代器就越过下一个元素,并返 ...

  8. java常用设计模式二:工厂模式

    1.简单工厂模式(静态工厂方法模式) 抽象实例: public interface People { void talk(); } 具体实例: public class Doctor implemen ...

  9. java常用设计模式总览

    一.java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式. 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组 ...

随机推荐

  1. 【转帖】K8s-yaml的使用及命令

    K8s-yaml的使用及命令 https://www.cnblogs.com/fuyuteng/p/9460534.html YAML配置文件管理对象 对象管理: # 创建deployment资源 k ...

  2. [转帖]PKI系统深入介绍

    PKI系统深入介绍 https://blog.csdn.net/liuhuiyi/article/details/7776825 2012年07月23日 20:17:01 liuhuiyi 阅读数 4 ...

  3. 在Docker Container 内部安装 Mono 的方法 ---From官网

    1.首先 mono 是什么 Mono是一个由Xamarin公司(先前是Novell,最早为Ximian)所主持的自由开放源代码项目. 该项目的目标是创建一系列匹配ECMA标准(Ecma-334和Ecm ...

  4. 点了安装SQL2000后没反应了的处理方法

    摘自JerrY的博客 http://blog.sina.com.cn/s/blog_403ef7e80101iy3p.html 点了安装SQL2000后没反应了的处理方法 以前的时候给客户电脑安装SQ ...

  5. kafka安装使用配置1.2

    进入cd /usr/local/flume/conf/ vi kafka.conf 配置 agent.sources=s1 agent.channels=c1 agent.sinks=k1 agent ...

  6. mysql 常见问题整理

    一 coalesce 在mysql中,其实有不少方法和函数是很有用的,这次介绍一个叫coalesce的,拼写十分麻烦,但其实作用是将返回传入的参数中第一个非null的值,比如 SELECT COALE ...

  7. 今天遇到了不能创建mysql函数

    今天用navicat 不能创建函数,查询了 MySQL函数不能创建,是未开启功能: mysql> show variables like '%func%'; +----------------- ...

  8. 《深入理解 Java 虚拟机》学习 -- 垃圾收集器

    <深入理解 Java 虚拟机>学习 -- 垃圾收集器 1. Serial 收集器(新生代) 含义: 单线程收集器. 缺点: 进行垃圾收集时,必须暂停其他所有的工作线程. 优点: 简单而高效 ...

  9. 进阶Java编程(7)反射机制

    反射机制 1,反射机制简介 在Java语言里面之所以会有如此多的开源技术支撑,很大的一部分是来自于Java最大的特征[反射机制].如果你不能够使用反射机制去进行项目的开发与设计,那么可以说你并未接触到 ...

  10. Windows10出现打开EXE应用程序错误

    运行部分EXE文件,弹出错误“该文件没有与之关联的程序来执行该操作 右键开始菜单, PowerShell(管理员)  也是一样 连安装程序Vs2017都无法启动,用了多种方法都不能搞定. 花了不少时间 ...