Bootstrap

用JAVA写算法之输入输出篇

        本系列适合原来用C语言或其他语言写算法,但是因为找工作或比赛的原因改用JAVA语言写算法的同学。当然也同样适合初学算法,想用JAVA来写算法题的同学。

常规方法:使用Scanner类和System.out

        这种方法适用于leetcode,以及一些面试手撕(ACM模式)的场景,对于读写性能要求不高,但是简单够用。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(); // 读取一个整数
        double d = scanner.nextDouble(); // 读取一个浮点数
        String str = scanner.next(); // 读取一个单词
        String line = scanner.nextLine(); // 读取一整行
        
        //换行输出
        System.out.println("Hello");
        //不换行输出
        System.out.print("World");
        //格式化输出
        System.out.printf("%6d,%6d,%6.2f", n, n, d);
    }
}

        一些特殊情况,需要循环输入多组数据,直到输入结束( EOF)

Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) 
{
    int n = scanner.nextInt(); // 读取下一个整数
}

        

进阶方法:使用BufferedReader和PrintWriter进行快读快写

        适用于算法竞赛以及秋招笔试的场景(本人见过一些秋招笔试题竟然会卡快读快写,所以还是需要掌握为好),对读写性能要求比较高

import java.io.*;

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

//快读
int n = Integer.parseInt(in.readLine());
String s = in.readLine();

// 快写
out.println(result.toString());
out.flush();

;