【蓝桥杯】Java组必备API类

时间: 2023-10-19 admin IT培训

【蓝桥杯】Java组必备API类

【蓝桥杯】Java组必备API类

输入和输出

输入

Scanner s = new Scanner(System.in);  //声明一个从控制台中读入数据的对象
int x = s.nextInt();
double x = s.nextDouble();
String x = s.next();  //无法读入空格
String x = s.nextLine();  //可以读入空格,遇到换行停止while(s.hasNext()) {  //hasNext() 判断还有没有读入值 相当于while(scanf())//如果有字符,返回true,否则阻塞//hasNext()不会返回false
}
s.hasNextInt();  //判断输入是否为int,是则返回,否则阻塞
s.hasNextDouble();  //判断输入是否为double,是则返回,否则阻塞

输出

System.out.println();
System.out.print();  
System.out.printf();  //格式化输出

prinf()函数与C++中的prinf相同

print()和println()的区别是println()换行

封装输入和输出

通过重写函数的形式来缩写输入和输出,具体情况如下所示

输入
static int gtInt() {int x = sc.nextInt();return x;
}
输出
static void print(int x) {System.out.print(x);
}static void println(int x) {System.out.println(x);
}

快速读写

构造:

BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter w = new BufferedWriter(new OutputStreamWriter(System.out));
int x = r.read();  //读取一个字符并将其转换为UTF-8的值
eg: 输入123213123,x只能读取到1
String x = r.readLine();  //读取一行的值
String[] x = r.readLine().split(' ');  //分割字符形成字符串

需要注意的是 在windows中按一下回车键 一共有两个字符 “\n\r” 而read()只能读取一个字符所以如要要用read来达到吸收回车的目的,需要用两个read(); 如果用readLine()的话会将"\n\r"全部吸收 , 所以只需要一个readLine()来吸收回车

w.write(x);
w.write("\n");
w.flush();
w.write(Integer.toString(x));  //输出int型变量

需要注意的是 write() 不能直接输出int类型, 因为write(int a) 会输出其对应的ASCii码的字符

eg:write(65); => A

由于java是面向对象的语言,所以这里将快读和快写封装成类比较好用一些。

快读类

StreamTokenizer读取字符类型,而BufferedReader读取字符串。这里买呢StreamTokenizer也可以读取字符串,但是不会读取特殊符号和数字,所以我们最好用BufferedReader读取。

static class FastRead {StreamTokenizer streamTokenizer;  //读取数字BufferedReader bufferedReader;  //读取字符串public FastRead() {streamTokenizer = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));br = new BufferedReader(new InputStreamReader(System.in));}int gtInt() throws IOException {streamTokenizer.nextToken();int x = (int) streamTokenizer.nval;return x;}long gtLong() throws IOException {streamTokenizer.nextToken();long l = (long) streamTokenizer.nval;return l;}double gtDouble() throws IOException {streamTokenizer.nextToken();double x = streamTokenizer.nval;return x;}String gtString() throws IOException {String s = bufferedReader.readLine();return s;}
}
快写类

快速输出这里我们选用的是printWriter。

static class FastWrite {PrintWriter printWriter;public FastWrite() {printWriter = new PrintWriter(new OutputStreamWriter(System.out));}void print(int x) {printWriter.print(x);}void print(String sc) {printWriter.print(sc);}void print(double x) {printWriter.print(x);}void println(int x) {printWriter.println(x);}void println(double x) {printWriter.println(x);}
}