蓝桥杯Java输入输出相关
转载自:http://blog.csdn.net/Chen_Tongsheng/article/details/53354169
一、注意点
1. 类名称必须采用public class Main方式命名
2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错误
3. 有些OJ上的题目会直接将OI上的题目拷贝过来,所以即便是题目中有输入和输出文件,可能也不需要,因为在OJ系统中一般是采用标准输入输出,不需要文件
4. 在有多行数据输入的情况下,一般按以下代码示例处理:
import java.util.Scanner; import java.io.*; public class Main{ public static void main(String[] args){ Scanner in1 = new Scanner(System.in); Scanner in2 = new Scanner(new BufferedInputStream(System.in));//输入速度较前者 in1 要快,但但一般不用这个BufferedInputStream缓存 //输入多组测试数据一般用:while(in1.hasNextInt()) 或者是 while(in1.hasNext()) } }
long startTime = System.nanoTime(); // Code... 运用算法来解决问题的运行代码 long estimatedTime = System.nanoTime() - startTime;
二、输入输出处理
由于ACM竞赛题目的输入数据和输出数据一般有多组(不定),并且格式多种多样,所以,如何处理题目的输入输出是对大家的一项最基本的要求。这也是困扰初学者的一大问题。
1. 输入
格式1:Scanner sc = new Scanner (new BufferedInputStream(System.in));
格式2:Scanner sc = new Scanner (System.in);
在读入数据量大的情况下,格式1的速度会快些。
读一个整数: int n = sc.nextInt(); 相当于 scanf("%d", &n); 或 cin >> n;
读一个字符串:String s = sc.next(); 相当于 scanf("%s", s); 或 cin >> s;
读一个浮点数:double t = sc.nextDouble(); 相当于 scanf("%lf", &t); 或 cin >> t;
读一整行: String s = sc.nextLine(); 相当于 gets(s); 或 cin.getline(...);
判断是否有下一个输入可以用sc.hasNext()或sc.hasNextInt()或sc.hasNextDouble()或sc.hasNextLine()
例1:读入整数
Input 输入数据有多组,每组占一行,由一个整数组成。
Sample Input
56
67
100
123
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { // 判断是否结束 int num = in.nextInt();// 读入整数 } } }
例2:读入实数
输入数据有多组,每组占2行,第一行为一个整数N,指示第二行包含N个实数。
Sample Input
4
56.9 67.7 90.5 12.8
5
56.9 67.7 90.5 12.8
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int n = sc.nextInt(); for (int i = 0; i < n; i++) { double a = sc.nextDouble(); } } } }
例3:读入字符串【杭电2017 字符串统计】
输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
Sample Input
2
asdfasdf123123asdfasdf
asdf111111111asdfasdfasdf
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 0; i < n; i++) { String str = sc.next(); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); for (int i = 0; i < n; i++) { String str = sc.nextLine(); } } }
例3:读入字符串【杭电2005 第几天?】
给定一个日期,输出这个日期是该年的第几天。
Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成
1985/1/20
2006/3/12
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); for (int i = 0; i < n; i++) { String str = sc.nextLine(); } } }
2. 输出
函数:
System.out.print();
System.out.println();
System.out.format();
System.out.printf();
3. 规格化的输出
函数:
// 这里0指一位数字,#指除0以外的数字(如果是0,则不显示),四舍五入.
DecimalFormat fd = new DecimalFormat("#.00#");
DecimalFormat gd = new DecimalFormat("0.000");
System.out.println("x =" + fd.format(x));
System.out.println("x =" + gd.format(x));
import java.util.Scanner; public class Main { public static void main(String[] args) { NumberFormat formatter = new DecimalFormat("000000"); String s = formatter.format(-1234.567); // -001235 System.out.println(s); formatter = new DecimalFormat("##"); s = formatter.format(-1234.567); // -1235 System.out.println(s); s = formatter.format(0); // 0 System.out.println(s); formatter = new DecimalFormat("##00"); s = formatter.format(0); // 00 System.out.println(s); formatter = new DecimalFormat(".00"); s = formatter.format(-.567); // -.57 System.out.println(s); formatter = new DecimalFormat("0.00"); s = formatter.format(-.567); // -0.57 System.out.println(s); formatter = new DecimalFormat("#.#"); s = formatter.format(-1234.567); // -1234.6 System.out.println(s); formatter = new DecimalFormat("#.######"); s = formatter.format(-1234.567); // -1234.567 System.out.println(s); formatter = new DecimalFormat(".######"); s = formatter.format(-1234.567); // -1234.567 System.out.println(s); formatter = new DecimalFormat("#.000000"); s = formatter.format(-1234.567); // -1234.567000 System.out.println(s); formatter = new DecimalFormat("#,###,###"); s = formatter.format(-1234.567); // -1,235 System.out.println(s); s = formatter.format(-1234567.890); // -1,234,568 System.out.println(s); // The ; symbol is used to specify an alternate pattern for negative // values formatter = new DecimalFormat("#;(#) "); s = formatter.format(-1234.567); // (1235) System.out.println(s); // The ' symbol is used to quote literal symbols formatter = new DecimalFormat(" '# '# "); s = formatter.format(-1234.567); // -#1235 System.out.println(s); formatter = new DecimalFormat(" 'abc '# "); s = formatter.format(-1234.567); // - abc 1235 System.out.println(s); formatter = new DecimalFormat("#.##%"); s = formatter.format(-12.5678987); System.out.println(s); } }
4. 字符串处理 String
String 类用来存储字符串,可以用charAt方法来取出其中某一字节,计数从0开始:
String a = "Hello"; // a.charAt(1) = 'e'
用substring方法可得到子串,如上例
System.out.println(a.substring(0, 4)) // output "Hell"
注意第2个参数位置上的字符不包括进来。这样做使得 s.substring(a, b) 总是有 b-a个字符。
字符串连接可以直接用 + 号,如
String a = "Hello";
String b = "world";
System.out.println(a + ", " + b + "!"); // output "Hello, world!"
如想直接将字符串中的某字节改变,可以使用另外的StringBuffer类。
5. 高精度
BigInteger和BigDecimal可以说是acmer选择java的首要原因。
函数:add, subtract, divide, mod, compareTo等,其中加减乘除模都要求是BigInteger(BigDecimal)和BigInteger(BigDecimal)之间的运算,所以需要把int(double)类型转换为BigInteger(BigDecimal),用函数BigInteger.valueOf().
import java.io.BufferedInputStream; import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner (new BufferedInputStream(System.in)); int a = 123, b = 456, c = 7890; BigInteger x, y, z, ans; x = BigInteger.valueOf(a); y = BigInteger.valueOf(b); z = BigInteger.valueOf(c); ans = x.add(y); System.out.println(ans); ans = z.divide(y); System.out.println(ans); ans = x.mod(z); System.out.println(ans); if (ans.compareTo(x) == 0) System.out.println("1"); } }
6. 进制转换
String st = Integer.toString(num, base); // 把num当做10进制的数转成base进制的st(base <= 35).
int num = Integer.parseInt(st, base); // 把st当做base进制,转成10进制的int(parseInt有两个参数,第一个为要转的字符串,第二个为说明是什么进制).
BigInter m = new BigInteger(st, base); // st是字符串,base是st的进制.
7. 数组排序
函数:Arrays.sort();
转载于:https://www.cnblogs.com/pomodoro/p/8525717.html
蓝桥杯Java输入输出相关相关推荐
- 2013第四届蓝桥杯Java组省赛题解析
2013第四届蓝桥杯Java组省赛题解析 目录 第一题:高斯日记 第二题:马虎的算式 第三题:第39级台阶 第四题:黄金连分数 第五题:前缀判断 第六题:三部排序 第七题:错误票据 第八题:翻硬币 ...
- 杨辉三角形--2021蓝桥杯Java组
杨辉三角形–2021蓝桥杯Java组 题目描述 下面的图形是著名的杨辉三角形: 如果我们按从上到下.从左到右的顺序把所有数排成一列,可以得到如下数列:1,1,1,1,2,1,1,3,3,1,1,4,6 ...
- 蓝桥杯Java大学C组近三年真题解析(三)——暴力、模拟题
目录 第十届 求和 题目 题解 代码 矩形切割 题目 题解一 代码 代码 代码 题解二 代码 不同子串 题目 题解 代码 质数 题目 题解 代码 最大降雨量 题目 题解 代码 旋转 题目 题解 代码 ...
- 蓝桥杯Java大学C组近三年真题解析(二)——暴力、模拟题
目录 第十一届 约数个数 题目 题解 代码 代码 寻找 2020 题目 题解 代码 代码 跑步锻炼 题目 题解 代码 代码 代码 灵活使用Excel 平面分割 题目 题解 代码 代码 七段码 题目 ...
- java蓝桥杯凑算是,第七届蓝桥杯JAVA B组真题解析-凑算式(第三题)
第七届蓝桥杯JAVA B组真题解析-凑算式(第三题) 凑算式 A+B/C+DEF/GHI =10 (如果显示有问题,可以参见[图1.jpg]) 这个算式中AI代表19的数字,不同的字母代表不同的数字. ...
- 蓝桥杯Java历年真题与答案_蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的)...
蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的) 1蓝桥杯 java 历年真题及答案整理(闭关一个月,呕心沥血整理出来的)1. 算法是这样的,如果给定 N 个不同字符,将这 N 个 ...
- 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...
最新文章
- 2017年2月18日 K-means
- Linux grep 命令初步学习
- linux系统日志_第十二章:走进Linux世界——系统日志管理,日志轮转。
- how is odata metadata request served 故意把configuration file里的GM6改成GM61之后
- [凯立德]2014秋季版C1204-C7K05-3321J0L(SP2)WinCE版
- ASP.NET的ADO(ActiveX Data Objects)
- Linux下防火墙开启相关端口及查看已开启端口
- ibm服务器如何进入u盘装系统,加密u盘在电脑上怎么打开ibm服务器u盘装系统
- TS文件合并,这里提供了一点小思路。
- 根据时间排序(collection.sort())
- 神州信息“六合上甲”一体化数据开发平台全面数智升级!
- java查找文件路径_如何查找java路径?
- Quartz教程六--CronTrigger
- H3C交换机的irf配置
- 阿里巴巴B2B测试用例编写规范
- Linux—team高可用
- GPU编程和流式多处理器(三)
- 论文阅读Vertebral Labelling in Radiographs: Learning a Coordinate Corrector to Enforce Spinal Shape
- 美和易思 MOOT去鼠标检测,快进,倍速,自动下一章
- 学科资源网 php源码,素材资源解析平台PHP源码 V8.0