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

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);}}
http://www.xdnf.cn/news/5028.html

相关文章:

  • 软件测试——用例篇(2)
  • JavaScript与TypeScript深度对比分析
  • C++中volatile关键字详解
  • 赤色世界 陈默传 第一章 另一个陈默
  • 课程设计。。。。
  • 【C++设计模式之Strategy策略模式】
  • ISP流程介绍(Rgb格式阶段)
  • Java 原生实现代码沙箱(OJ判题系统第1期)——设计思路、实现步骤、代码实现
  • MySQL——七、索引
  • ArrayList和LinkedList区别
  • nginx的学习笔记
  • Android屏蔽通话功能和短信功能
  • AD 电阻容模型的创建
  • 68、微服务保姆教程(十一)微服务的监控与可观测性
  • 乌班图安装docker
  • 1.3.2 linux音频PulseAudio详细介绍
  • 关系模式-无损连接和保持函数依赖的判断
  • 用Python解密霍格沃茨的情感密码:哈利波特系列文本挖掘之旅
  • 用 Java 实现一个简单的阻塞队列
  • HTML字符串转换为React元素实现
  • 云轴科技ZStack入选赛迪顾问2025AI Infra平台市场发展报告代表厂商
  • LeetCode 1722. 执行交换操作后的最小汉明距离 题解
  • Filecoin存储管理:如何停止Lotus向特定存储路径写入新扇区数据
  • 【杂谈】-认知的范式革命:从逻辑理性到类比思维
  • 什么是AI写作
  • Rust 中的 Pin 和 Unpin:内存安全与异步编程的守护者
  • Typora+PicGo+Gitee图床配置教程 自动图片上传
  • WebRTC工作原理详细介绍、WebRTC信令交互过程和WebRTC流媒体传输协议介绍
  • RabittMQ-高级特性2-应用问题
  • 8.1.Kubernetes进阶