1、输入

首先要想输入需要先包括:

  1. import java.util.*;

我们需要其中的 Scanner类声明的对象来扫描控制台输入。

针对A+B来说:

  1. import java.util.*;
  2. public class Main
  3. {
  4. public static void main(String [] args)
  5. {
  6. Scanner cin = new Scanner(System.in);//对于Scanner 类声明对象cin用来扫描控制台输入
  7. int a = cin.nextInt();
  8. int b = cin.nextInt();
  9. System.out.println(a+b);//输出a+b
  10. cin.close();
  11. }
  12. }

读一个整数:  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就很好解决。

  1. import java.math.*;//大数类在Java.math里面,如果不包括的话声明不了大数对象
  2. import java.util.*;
  3. public class Main
  4. {
  5. public static void main(String[] args)
  6. {
  7. // TODO Auto-generated method stub
  8. /*sss*/
  9. BigInteger [] a=new BigInteger[255]; //大数数组
  10. a[0]=BigInteger.ONE; //初始化
  11. a[1]=BigInteger.ONE;
  12. a[2]=a[1].add(a[0].add(a[0]));
  13. for(int i=3;i<=250;i++)
  14. {
  15. a[i]=a[i-1].add(a[i-2].add(a[i-2]));
  16. }
  17. Scanner cin = new Scanner(System.in); //输入打开
  18. while(cin.hasNext())//判断是否文件结束
  19. {
  20. int n=cin.nextInt();
  21. System.out.println(a[n]); //输出
  22. }
  23. cin .close();//输入关闭
  24. }
  25. }

2、输出:

  1. public class Main {
  2. public static void main(String[] args)
  3. {
  4. // TODO Auto-generated method stub
  5. double d;
  6. d=9999.99999;
  7. System.out.format("%f",d);                //9999.999990     没有回车
  8. System.out.format("%10.10f",d).println(); //9999.9999900000 输出回车
  9. System.out.format("%.4f",d).println();    //10000.0000      输出回车
  10. System.out.format("%3.4f",d).println();   //10000.0000      输出回车
  11. System.out.println(d);                    //输出当前变量      输出回车
  12. System.out.println();                     //                输出回车
  13. System.out.printf("%f",d);                //9999.999990     没有回车
  14. System.out.print(d);                      //9999.99999      没有回车
  15. }
  16. }

当然,输出的时候也有对小数位数处理的方法:

0代表当前位向后都是0就输出0占位,#代表若当前位向后都是0就不输出这些位上的数字。

  1. import java.text.DecimalFormat;
  2. public class Main {
  3. public static void main(String[] args)  {
  4. double num = 9.999;
  5. DecimalFormat p3 = new DecimalFormat("#.00#");
  6. DecimalFormat p4 = new DecimalFormat("#.000#");
  7. DecimalFormat p5 = new DecimalFormat("#.0000#");
  8. System.out.println(p3.format(num));//输出9.999
  9. System.out.println(p4.format(num));//输出9.999
  10. System.out.println(p5.format(num));//输出9.9990
  11. }
  12. }

3、高精度

对于大数来说,Java提供了BigDecimal和BigInteger两个类,都包含在java.math.*里面。

BigInteger是大整形类,BigDecimal是大浮点型类。

这两个类产生的对象没有数据范围,只要你的电脑内存足够就可以。

下面用BigInteger举个例子:

  1. import java.math.BigInteger;
  2. public class Main {
  3. public static void main(String[] args)
  4. {
  5. int a=6,b=3;
  6. BigInteger x,y,z;
  7. x=BigInteger.valueOf(a);           //转化赋值
  8. y=BigInteger.valueOf(b);
  9. System.out.println(x.add(y));      //加
  10. System.out.println(x.subtract(y)); //减
  11. System.out.println(x.multiply(y)); //乘
  12. System.out.println(x.divide(y));   //除
  13. System.out.println(x.mod(y));      //取余
  14. }
  15. }

4、进制转换

java一直就是作弊器一般的存在,就像它的进制转换函数一样:

  1. public class Main {
  2. public static void main(String[] args)
  3. {
  4. String string;
  5. int a=8;
  6. int x=2;
  7. string = Integer.toString(a, x);    //把int型数据转换乘X进制数并转换成string型
  8. System.out.println(string);
  9. int b = Integer.parseInt(string, x);//把字符串当作X进制数转换成int型
  10. System.out.println(b);
  11. }
  12. }

5、字符串

Java中的String   和char数组是完全不同的两种东西。

String中的字符是不能在原位置改变的,要改变必须改变并保存到新的String里,或者保存到char 数组里再修改

  1. import java.io.*;
  2. import java.util.*;
  3. public class Main
  4. {
  5. public static void main(String[] args)
  6. {
  7. Scanner cin = new Scanner (new BufferedInputStream(System.in));
  8. String st = "abcdefg";
  9. System.out.println(st.charAt(0)); // st.charAt(i)就相当于st[i].
  10. char [] ch;
  11. ch = st.toCharArray(); // 字符串转换为字符数组.
  12. for (int i = 0; i < ch.length; i++){
  13. ch[i] += 1;//字符数组可以像C++   一样操作
  14. }
  15. System.out.println(ch); // 输入为“bcdefgh”.
  16. st = st.substring(1); // 则从第1位开始copy(开头为第0位).
  17. System.out.println(st);
  18. st=st.substring(2, 4);  //从第2位copy到第4位(不包括第4位)
  19. System.out.println(st);//输出“de”
  20. }
  21. }

JAVA大数(转)的更多相关文章

  1. java大数

    java大数还是很好用的! 基本加入: import java.math.BigInteger; import jave.math.BigDecimal; 分别是大数和大浮点数. 首先读入可以用: S ...

  2. JAVA大数运算

    java大数是个好东西,用起来方便,代码短. 代码如下: import java.util.*; import java.math.*; public class Main { public stat ...

  3. java大数总结【转】

    java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...

  4. HDU5047Sawtooth(java大数)

    HDU5047Sawtooth(java大数) 题目链接 题目大意:在一个矩形内画n个"M".问如何画可以把这个矩形分成最多的区域. 给出这个区域的数目. 解题思路:最好的方式就是 ...

  5. JAVA大数类

    JAVA大数类api http://man.ddvip.com/program/java_api_zh/java/math/BigInteger.html#method_summary 不仅仅只能查J ...

  6. HDU4762(JAVA大数)

    Cut the Cake Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  7. ZOJ3477&JAVA大数类

    转:http://blog.csdn.net/sunkun2013/article/details/11822927 import java.util.*; import java.math.BigI ...

  8. 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&amp;记忆化递归

    HDU 4911 Inversion 考点:归并排序 思路:这题呀比赛的时候忘了知道能够用归并排序算出逆序数,可是忘了归并排序的实质了.然后不会做-- 由于看到题上说是相邻的两个数才干交换的时候.感觉 ...

  9. 收藏的一段关于java大数运算的代码

    收藏的一段关于java大数运算的代码: package study_02.number; import java.math.BigDecimal; import java.math.BigIntege ...

  10. java大数判断相等

    java大数判断相等: 1.equals()方法2.compareTo()方法区别:2.00与2.0 equals()方法判断不等,compareTo()方法判断相等,科学的说法可以看java api ...

随机推荐

  1. XML - 十分钟了解XML结构以及DOM和SAX解析方式

    引言 NOKIA 有句著名的广告语:"科技以人为本".不论什么技术都是为了满足人的生产生活须要而产生的.详细到小小的一个手机.里面蕴含的技术也是浩如烟海.是几千年来人类科技的结晶, ...

  2. A successful Git branching model/GIT分支管理是一门艺术

    英文原文:http://www.nvie.com/posts/a-successful-git-branching-model/ 原文作者:Vincent Driessen 本文经Linux大棚博主总 ...

  3. 分布式协调服务ZooKeeper工作原理

    分布式协调服务ZooKeeper工作原理 原创 2016-02-19 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 大数据处理框架Hadoop.R ...

  4. memcahce文章精选

    浅谈分布式缓存那些事儿  http://os.51cto.com/art/201306/397999.htm

  5. 浅谈 Objective-C 下对象的初始化

    转自:http://www.oschina.net/question/54100_32468 众所周知,Objective-C是一门面向对象的语言,一般情况下,我们在Objective-C中定义一个类 ...

  6. makefile之foreach函数

    #$(foreach <var>,<list>,<text>) #把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,然后再 ...

  7. 使用Lua的扩展库LuaSocket用例

    目录结构 LuaSocket 是 Lua 的网络模块库,它可以很方便地提供 TCP.UDP.DNS.FTP.HTTP.SMTP.MIME 等多种网络协议的访问操作. 它由两部分组成:一部分是用 C 写 ...

  8. Oracle之批量生成数据

    一.引言 由于测试程序,需要大量的数据 二.方法 1.pl/sql的Generate Data,在tool菜单中可以找到,但是我这里不能用,老是出现错误,应该是软件的原因,但是没找到解决办法,如下图: ...

  9. spring-test使用介绍

    一.首先引入spring的jar文件到项目中,我采用maven管理项目依赖的jar包: <properties> <spring.version>4.0.0.RELEASE&l ...

  10. 转载:JMeter压力测试入门教程[图文]

    JMeter压力测试入门教程[图文] Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可 ...