java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串。它本质上是使用正则表达式去读取不同的数据类型。
java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本。
用Scanner和BufferedReader两种方式实现以下场景:
用命令行输入一个数字m,如果m >1 输出小于m的所以质数,包括m自己。
Scanner 例子:
package sjtejcys;
import java.util.Scanner;
public class Primes {
public static void main(String[] args) {
System.out.println("请输入一个数字:");
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
if(m>1){
if(m ==2)
System.out.println(m);
else
{
int j = 0;
System.out.println(2);
for(int i = 3;i<=m;i++){
for(j =2;j<m;j++)
if(i%j == 0)
break;
if(j==i)
System.out.println(i);
}
}
}
sc.close();
}
}
BufferedReader 例子:
package sjtejcys;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class PrimesBF {
public static void main(String[] args) {
try {
System.out.println("请输入一个数字:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while ((str = br.readLine()) != null) {
int m = Integer.parseInt(str);
if (m > 1) {
if (m == 2)
System.out.println(m);
else {
int j = 0;
System.out.println(2);
for (int i = 3; i <= m; i++) {
for (j = 2; j < m; j++)
if (i % j == 0)
break;
if (j == i)
System.out.println(i);
}
}
}
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
简单来说:
BufferedReader 是先把数据读到缓存区然后在写到硬盘里
Scanner是直接往硬盘些数据
BufferedReader 的效率比Scanner高
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。