当前位置: 首页 > news >正文

java的输入输出模板(ACM模式)

文章目录

  • 1、前置准备
  • 2、普通输入输出API
    • ①、输入API
    • ②、输出API
  • 3、快速输入输出API
    • ①、BufferedReader
    • ②、BufferedWriter
  • 案例
    • 题目描述
    • 代码

面试有时候要acm模式,刷惯leetcode可能会手生不会acm模式,该文直接通过几个题来熟悉java的输入输出模板,多写几遍,熟悉即可。

1、前置准备

首先我们需要熟悉在没有idea的情况下如何手写并编译运行一个.java文件。

class Main{public static void main(String[] args) {System.out.println("hello java");}
}

每个.java文件必须有一个类我们一般命名为Main,文件名与代码中的类名必须一样。
在这里插入图片描述
命令行输入命令:

javac Main.java

生成Main.class的class文件,随后输入:

java Main

即可运行程序

在这里插入图片描述

2、普通输入输出API

import java.util.*;
import java.io.*;

不管如何,最开头这两个头文件都这样引入即可,这两个基本都会用到。

①、输入API

获取不同类型数据要使用nextXxx()的api。

示例代码:

public static void main(String[] args) {Scanner sc = new Scanner(System.in); //用于从控制台读入数据//获取int类型数据Integer a = sc.nextInt();//获取Double类型数据Double d = sc.nextDouble();//获取long类型数据long l = sc.nextLong();//获取short类型数据short b = sc.nextShort();System.out.print(a + " " + d + " " + l + " " + b + " ");}

运行结果:
在这里插入图片描述

获取字符串需要用到两个api:

①、in.next() 从缓冲区接收字符遇到空格后停止。 相当于 cin 和 scanf

②、in.nextLine() 从缓冲区接收字符,并且接收空格,遇到换行才停止,并且会自动舍弃换行。 相当于 gets()

    public static void main(String[] args) {Scanner sc = new Scanner(System.in); //用于从控制台读入数据String x = sc.next();String s = sc.nextLine();System.out.println("x: " + x);System.out.println("s: " + s);}

运行结果:
在这里插入图片描述
可以看到next()遇到空格就会暂停,而nextLine()遇到换行就会暂停。

②、输出API

输出有三种形式;
System.out.print(); // 最后打印结果不会加换行

System.out.println(); // 最后打印结果加换行

System.out.printf(); // 类似c语言中的printf。

直接代码中来看:
①、

public static void main(String[] args) {for(int i = 0; i < 3; i ++ ) {System.out.print(i + " ");}}

运行结果:

0 1 2 

②、

public static void main(String[] args) {for(int i = 0; i < 3; i ++ ) {System.out.println(i + " ");}}

运行结果:

0 
1 
2 

③、

public static void main(String[] args) {for(int i = 0; i < 3; i ++ ) {System.out.printf("%d ", i);}}

运行结果:

0 1 2 

3、快速输入输出API

①、BufferedReader

    public static void main(String[] args) throws Exception{BufferedReader in = new BufferedReader(new InputStreamReader(System.in));String s = in.readLine();String[] arr = in.readLine().split(" ");System.out.println("s: " + s);System.out.print("arr: ");for (String str : arr) {System.out.print(str + " ");}}

运行结果:

在这里插入图片描述
补充:in.read()方法返回值为Integer,用于读取整数。

②、BufferedWriter

当数据量大的时候一定要使用这个类进行输出,谨记!

public static void main(String[] args) throws Exception{BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));int a = 68;char b = '2';String c = "3";bw.write(a);bw.write("\n");bw.write(b);bw.write("\n");bw.write(c);bw.write("\n");bw.flush();}

运行结果:

D
2
3

在输出整型要注意,会输出对应ASCII码值的字符,比如ASCII码值为68的字符是D。

解决方式:

bw.write(a + "");
bw.write(Integer.toString(a));

尽量将其转为字符串进行输出。
输出结果:

68

案例

通过一道算法题,来练习熟悉一下api。

题目描述

给定你一个长度为 n的整数数列。

请你使用快速排序对这个数列按照从小到大进行排序。

并将排好序的数列按顺序输出。

输入格式
输入共两行,第一行包含整数 n。

第二行包含 n个整数(所有整数均在 1∼109范围内),表示整个数列。

输出格式
输出共一行,包含 n个整数,表示排好序的数列。

数据范围
1≤n≤100000

输入样例:
5
3 1 2 4 5
输出样例:
1 2 3 4 5

代码

这里可以将new Inputstream()用new BufferedInputStream()来替代,读取速度更快。

import java.util.*;
import java.io.*;class Main{public static void main(String[] args) throws Exception {Scanner sc = new Scanner(new BufferedInputStream(System.in));Integer n = sc.nextInt();Integer[] nums = new Integer[n + 1];for(int i = 0; i < n; i ++ ) {Integer x = sc.nextInt();nums[i] = x;}quick_sort(nums, 0, n - 1);for(int i = 0; i < n; i ++ ) {System.out.print(nums[i] + " ");}}public static void quick_sort(Integer[] nums, int l, int r) {if(l >= r) return;int mid = nums[l + r >>> 1];int i = l - 1, j = r + 1;while(i < j) {do i ++; while(nums[i] < mid);do j --; while(nums[j] > mid);if(i < j) {Integer tem = nums[i];nums[i] = nums[j];nums[j] = tem;}}quick_sort(nums, l, j); quick_sort(nums, j + 1, r);}}

相关文章:

  • 古方焕新潮!李良济盒马联名养生水,以创新赋能中式养生新潮流
  • 出现在‘{‘的段错误
  • Qt读写XML文档
  • linux动态占用内存脚本、根据阈值增加占用或取消占用内存的脚本、自动检测占用脚本状态,多脚本套用
  • 力扣-24.两两交换链表中的结点
  • 可视化图解算法36: 序列化二叉树-I(二叉树序列化与反序列化)
  • Rust 中的 `PartialEq` 和 `Eq`:深入解析与应用
  • R1-Omni
  • SAP note 3565626 : Baltimore CyberTrust 根证书即将过期
  • 数据结构与算法分析实验10 实现最短路径算法
  • “Cobalt Strike Aggressor脚本提权全解析:从监听器到SYSTEM/root的渗透实战指南“
  • HarmonyOS开发-组件市场
  • SpringAI--基于MySQL的持久化对话记忆实现
  • 关于C#项目中 服务层使用接口的问题
  • java-反射精讲
  • 移动设备常用电子屏幕类型对比
  • 【数据结构】1. 时间/空间复杂度
  • Java大师成长计划之第16天:高级并发工具类
  • 通过.sh脚本设置java环境变量
  • LeetCode:101、对称二叉树
  • 2025年4月份CPI环比由降转涨,核心CPI涨幅稳定
  • 中俄就应对美加征所谓“对等关税”等问题进行深入交流
  • 习近平向中国人民解放军仪仗队致意
  • 上海:企业招用高校毕业生可享受1500元/人一次性扩岗补助
  • 保证断电、碰撞等事故中车门系统能够开启!隐藏式门把手将迎来强制性国家标准
  • 大四本科生已发14篇SCI论文?重庆大学:成立工作组核实