JAVA大数(转)
1、输入
首先要想输入需要先包括:
- import java.util.*;
我们需要其中的 Scanner类声明的对象来扫描控制台输入。
针对A+B来说:
- import java.util.*;
- public class Main
- {
- public static void main(String [] args)
- {
- Scanner cin = new Scanner(System.in);//对于Scanner 类声明对象cin用来扫描控制台输入
- int a = cin.nextInt();
- int b = cin.nextInt();
- System.out.println(a+b);//输出a+b
- cin.close();
- }
- }
读一个整数: int n = cin.nextInt(); 相当于 scanf("%d", &n); 或 cin >> n;
读一个字符串:String s = cin.next(); 相当于 scanf("%s", s); 或 cin >> s;
读一个浮点数:double t = cin.nextDouble(); 相当于 scanf("%lf", &t); 或 cin >> t;
读一整行: String s = cin.nextLine(); 相当于 gets(s); 或 cin.getline(...);
读一个大数: BigInteger c = cin.nextBigInteger();
不过需要注意的是它们没有像scanf一样有判断是否输入到结尾的功能。
这时候需要用一个Scanner类的方法hasnext()来判断是否输入到文件结尾;
例如POJ2506 这是一个针对大数处理的递推题。用Java就很好解决。
- import java.math.*;//大数类在Java.math里面,如果不包括的话声明不了大数对象
- import java.util.*;
- public class Main
- {
- public static void main(String[] args)
- {
- // TODO Auto-generated method stub
- /*sss*/
- BigInteger [] a=new BigInteger[255]; //大数数组
- a[0]=BigInteger.ONE; //初始化
- a[1]=BigInteger.ONE;
- a[2]=a[1].add(a[0].add(a[0]));
- for(int i=3;i<=250;i++)
- {
- a[i]=a[i-1].add(a[i-2].add(a[i-2]));
- }
- Scanner cin = new Scanner(System.in); //输入打开
- while(cin.hasNext())//判断是否文件结束
- {
- int n=cin.nextInt();
- System.out.println(a[n]); //输出
- }
- cin .close();//输入关闭
- }
- }
2、输出:
- public class Main {
- public static void main(String[] args)
- {
- // TODO Auto-generated method stub
- double d;
- d=9999.99999;
- System.out.format("%f",d); //9999.999990 没有回车
- System.out.format("%10.10f",d).println(); //9999.9999900000 输出回车
- System.out.format("%.4f",d).println(); //10000.0000 输出回车
- System.out.format("%3.4f",d).println(); //10000.0000 输出回车
- System.out.println(d); //输出当前变量 输出回车
- System.out.println(); // 输出回车
- System.out.printf("%f",d); //9999.999990 没有回车
- System.out.print(d); //9999.99999 没有回车
- }
- }
当然,输出的时候也有对小数位数处理的方法:
0代表当前位向后都是0就输出0占位,#代表若当前位向后都是0就不输出这些位上的数字。
- import java.text.DecimalFormat;
- public class Main {
- public static void main(String[] args) {
- double num = 9.999;
- DecimalFormat p3 = new DecimalFormat("#.00#");
- DecimalFormat p4 = new DecimalFormat("#.000#");
- DecimalFormat p5 = new DecimalFormat("#.0000#");
- System.out.println(p3.format(num));//输出9.999
- System.out.println(p4.format(num));//输出9.999
- System.out.println(p5.format(num));//输出9.9990
- }
- }
3、高精度
对于大数来说,Java提供了BigDecimal和BigInteger两个类,都包含在java.math.*里面。
BigInteger是大整形类,BigDecimal是大浮点型类。
这两个类产生的对象没有数据范围,只要你的电脑内存足够就可以。
下面用BigInteger举个例子:
- import java.math.BigInteger;
- public class Main {
- public static void main(String[] args)
- {
- int a=6,b=3;
- BigInteger x,y,z;
- x=BigInteger.valueOf(a); //转化赋值
- y=BigInteger.valueOf(b);
- System.out.println(x.add(y)); //加
- System.out.println(x.subtract(y)); //减
- System.out.println(x.multiply(y)); //乘
- System.out.println(x.divide(y)); //除
- System.out.println(x.mod(y)); //取余
- }
- }
4、进制转换
java一直就是作弊器一般的存在,就像它的进制转换函数一样:
- public class Main {
- public static void main(String[] args)
- {
- String string;
- int a=8;
- int x=2;
- string = Integer.toString(a, x); //把int型数据转换乘X进制数并转换成string型
- System.out.println(string);
- int b = Integer.parseInt(string, x);//把字符串当作X进制数转换成int型
- System.out.println(b);
- }
- }
5、字符串
Java中的String 和char数组是完全不同的两种东西。
String中的字符是不能在原位置改变的,要改变必须改变并保存到新的String里,或者保存到char 数组里再修改
- import java.io.*;
- import java.util.*;
- public class Main
- {
- public static void main(String[] args)
- {
- Scanner cin = new Scanner (new BufferedInputStream(System.in));
- String st = "abcdefg";
- System.out.println(st.charAt(0)); // st.charAt(i)就相当于st[i].
- char [] ch;
- ch = st.toCharArray(); // 字符串转换为字符数组.
- for (int i = 0; i < ch.length; i++){
- ch[i] += 1;//字符数组可以像C++ 一样操作
- }
- System.out.println(ch); // 输入为“bcdefgh”.
- st = st.substring(1); // 则从第1位开始copy(开头为第0位).
- System.out.println(st);
- st=st.substring(2, 4); //从第2位copy到第4位(不包括第4位)
- System.out.println(st);//输出“de”
- }
- }
JAVA大数(转)的更多相关文章
- java大数
java大数还是很好用的! 基本加入: import java.math.BigInteger; import jave.math.BigDecimal; 分别是大数和大浮点数. 首先读入可以用: S ...
- JAVA大数运算
java大数是个好东西,用起来方便,代码短. 代码如下: import java.util.*; import java.math.*; public class Main { public stat ...
- java大数总结【转】
java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...
- HDU5047Sawtooth(java大数)
HDU5047Sawtooth(java大数) 题目链接 题目大意:在一个矩形内画n个"M".问如何画可以把这个矩形分成最多的区域. 给出这个区域的数目. 解题思路:最好的方式就是 ...
- JAVA大数类
JAVA大数类api http://man.ddvip.com/program/java_api_zh/java/math/BigInteger.html#method_summary 不仅仅只能查J ...
- HDU4762(JAVA大数)
Cut the Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- ZOJ3477&JAVA大数类
转:http://blog.csdn.net/sunkun2013/article/details/11822927 import java.util.*; import java.math.BigI ...
- 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&记忆化递归
HDU 4911 Inversion 考点:归并排序 思路:这题呀比赛的时候忘了知道能够用归并排序算出逆序数,可是忘了归并排序的实质了.然后不会做-- 由于看到题上说是相邻的两个数才干交换的时候.感觉 ...
- 收藏的一段关于java大数运算的代码
收藏的一段关于java大数运算的代码: package study_02.number; import java.math.BigDecimal; import java.math.BigIntege ...
- java大数判断相等
java大数判断相等: 1.equals()方法2.compareTo()方法区别:2.00与2.0 equals()方法判断不等,compareTo()方法判断相等,科学的说法可以看java api ...
随机推荐
- Sublime Text 3 JS 格式化插件 JsFormat的配置使用
1.首先需要下载安装包:(下载地址:https://github.com/jdc0589/JsFormat) 2.插件包放到sublime安装目录的Data\Packages目录中 3.快捷键 Ctr ...
- 编译的时候找不到包 但是maven denpendencies已经有这个包 。或者myeclipse 为webroot eclipse为webContext需要修改
在Eclipse中生成项目是WebContent目录 而在MyEclipse中生成的项目目录名字好像叫做WebRoot,那么如果把MyEclipse的项目导入到Eclipse中,如果要部署项目到Tom ...
- 转:C#操作摄像头
转自: http://blog.csdn.NET/chenhongwu666/article/details/40594365 如有雷同,不胜荣幸,若转载,请注明 最近做项目需要操作摄像头,在网上百度 ...
- android 模拟器上传文件 Read-only file system
在cmd窗口一条命令就可以了:adb shellmount -o remount rw /
- 安卓端OCR文字识别之番外篇
拍照识别------OCR怎样在移动端大放异彩 大家好.我是文通晓伟.非常高兴能和大家共同探讨一下OCR识别技术在安卓端的应用. 首先坦白交代,我不是技术流,我是销售狗. 每天有打不完的电话和做不完的 ...
- Lintcode---线段树查询(区间最大值)
对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值. 为SegmentTree设计 ...
- linux按内容查找文件
1,在某个路径下查文件. 在/etc下查找“*.log”的文件 find /etc -name "*.log" 2,扩展,列出某个路径下所有文件,包括子目录. find /etc ...
- 如何让sublime text 2/3支持中文编码
由于每个编辑器默认编码格式不一样,所以大致在一些编辑器中编辑的代码注释在另外一些编辑器中出现乱码.在sourceinsight里面编辑的中文在sublime text3中出现乱码,所以上网找了一下解决 ...
- 微信小程序1 - 扩展app.js
常规的开发过程中, 每个Page的逻辑中,要使用 util.js WapRequest.js, 需要在每个页面中书写 require('/utils/WapRequest'); 略繁琐 在app. ...
- R语言中将hello打印10次的两种方法
我们有两种方法来做这件事情: 1.for结构 for循环重复的执行一个语句,直到某个变量的值不再包含在序列seq中为止. 语法: for (var in seq) statement 例如: > ...