20150301图形旋转(100分)(附Scanner与BufferedReader性能)

BufferedReader与Scanner(20150301图形旋转)

做题在做CCF(2015-03-01)的题目的时候遇到了一个问题,由于自己之前一直用C在写,现在改用Java,结果一开局就遇到了这个问题,当时自己百度也没找到为什么,然后去百度搜答案,全部都是80分的,问了周边的人,他们也不知道,最后在自己研究了几个小时之下,明白了这个道理

BufferdReader与Scanner

BufferedReader:

BufferedReader在读取数据的时候,由于自身类拥有8192字符的缓冲区,因此在读入的数据(键盘、t’x’t文件)时候,会先将其读入缓存区中,之后在使用reade()方法从缓存区中取文件
==此处不在说缓冲区数据充足与不满的情况,大家自行百度 ==

Scanner

Scanner写java的人应该都是在熟悉不过的,它主要就是读取用户在命令行的各种数据。此处省略1W字介绍scanner,接下来我们来说说,Scanner与Buf’feredReader的性能区别

Scanner与Buffered性能:

当我们从键盘获取数据的时候,每一次Scanner消耗的时长都要小于BufferedReader。Scanner的平均耗时大约是BufferedReader的10个倍左右。因此我们在做题时候发现,无论怎么改代码都是运行内存超限制,现在应该有所了解了。
所以告诫大家,如果下次还是做CCF/CSP的认证的时候,建议遇到二维数组的时候使用BufferedReader类,这样性能会提升不少。

BufferedReader语法

BufferedReader类位于Java.io中因此在使用的时候。需要用import导入包。在BufferedReader这个类中的reader Line()方法处理Java.io.IOEcxception的异常抛出,这里可能理解有问题,我们直接来看用法,用法都是固定的:

	BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
		String[] tt = input.readLine().split(" ");
		int n = Integer.parseInt(tt[0]);

reader Line()方法返回用户按下回车键以前的字符。split(“ ”)指的是按照空格进行分离。
接下来我们来看题目

CCF计算机能力认证201503-1(图形旋转)

在这里插入图片描述
代码如下:(自己写的,运行通过,节约了接近200M的内存,大家可以参考一下).


import java.util.Scanner;
import java.io.*;
public class w20150301 {
	
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		Scanner in = new Scanner (System.in);
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
		
		String[] tt = input.readLine().split(" ");
		int n = Integer.parseInt(tt[0]);//行
		int m = Integer.parseInt(tt[1]);//列
		int [][]num1= new int[n][m];
		int [][]num2= new int[m][n];
		
		for (int t = 0; t < n; t++) {
			String[] str = input.readLine().split(" ");
			for(int i = 0; i < str.length; i++) num1[t][i] = Integer.parseInt(str[i]);

		}
		
		for(int i = 0; i< num1.length; i++)
			for (int j = 0; j <num1[i].length; j++)
				num2[j][i] = num1[i][j];
		
		for(int i = num2.length-1; i>= 0; i--) {
			for (int j = 0; j < num2[i].length; j++)
				System.out.print(num2[i][j]+" ");
			System.out.println();
		}
		
	}

}

猜你喜欢

转载自blog.csdn.net/qq_40432886/article/details/96359635