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

news2025/5/12 10:52:01

文章目录

  • 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.coloradmin.cn/o/2372999.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙 所有API缩略图鉴

从HarmonyOS NEXT Developer Preview1&#xff08;API 11&#xff09;版本开始&#xff0c;HarmonyOS SDK以 Kit 维度提供丰富、完备的开放能力&#xff0c;涵盖应用框架、应用服务、系统、媒体、AI、图形在内的六大领域&#xff0c;共计30000个API

【Docker系列】使用格式化输出与排序技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

基础语法(二)

Mysql基础语法&#xff08;二&#xff09; Mysql基础语法&#xff08;二&#xff09;主要介绍Mysql中稍微进阶一点的内容&#xff0c;会稍微有一些难度&#xff08;博主个人认为&#xff09;。学习完基础语法&#xff08;一&#xff09;和基础语法&#xff08;二&#xff09;之…

TOA的定位,建模与解算的步骤、公式推导

TOA(到达时间)定位的核心是通过测量信号从目标到多个基站的传播时间,将其转换为距离信息,并利用几何关系解算目标位置。本文给出具体的建模与解算步骤及公式推导 文章目录 通用模型建立非线性方程组构建线性化处理(最小二乘法)最大似然估计(ML)高斯-牛顿迭代法误差分析…

2025年PMP 学习七 -第5章 项目范围管理 (5.4,5.5,5.6 )

2025年PMP 学习七 -第5章 项目范围管理 5.4 创建 WBS 1.定义与作用 定义把项目可交付成果和项目工作分解成较小的&#xff0c;更易于管理的组件作用对所要交付的内容提供一个结构化的视图 2.输入&#xff0c;输出&#xff0c;工具与技术 3. 创建WBS的依据&#xff08;输入&…

CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发

CAD插件实现块属性值与excel的互动&#xff0c;效果如下&#xff1a; 加载dll插件&#xff08;CAD 命令行输入netload &#xff0c;运行xx即可导出Excel&#xff0c;运行xx1即可根据excel更新dwg块属性值。&#xff09; 部分代码如下 // 4. 开启事务更新CAD数据using (Transact…

【HarmonyOS 5】鸿蒙中进度条的使用详解

【HarmonyOS 5】鸿蒙中进度条的使用详解 一、HarmonyOS中Progress进度条的类型 HarmonyOS的ArkUI框架为开发者提供了多种类型的进度条&#xff0c;每种类型都有其独特的样式&#xff0c;以满足不同的设计需求。以下是几种常见的进度条类型&#xff1a; 线性进度条&#xff08;…

Spring Cloud: Nacos

Nacos Nacos是阿里巴巴开源的一个服务发现&#xff0c;配置管理和服务管理平台。只要用于分布式系统中的微服务注册&#xff0c;发现和配置管理&#xff0c;nacos是一个注册中心的组件 官方仓库&#xff1a;https://nacos.io/ Nacos的下载 Releases alibaba/nacos 在官网中…

Win11安装APK方法详解

1、官方win11系统 预览版 开发版 正式版 都行 2、同时你还需要开启主板 BIOS 虚拟化选项&#xff08;具体名称不同主板略有不同&#xff09; 这一步自行百度 开始&#xff1a;先去确定有没有开启虚拟化 任务管理器检查—— 虚拟化是否已经开启&#xff0c;如果没有自己去BIO…

SSH终端登录与网络共享

SSH 是较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性的协议 注意 SSH终端登录的前提是&#xff1a;电脑和板卡都能够通过网络相连接及通信 与连接互联网不一样&#xff0c;SSH可以不用互联网&#xff0c;只要电脑和板卡组成一个小型网络即可 网络方案 如果您…

Android 13 默认打开 使用屏幕键盘

原生设置里&#xff0c;系统-语言和输入法-实体键盘-使用屏幕键盘 选项&#xff0c; 关闭时&#xff0c;外接物理键盘&#xff0c;如USB键盘&#xff0c;输入时不会弹出软键盘。 打开时&#xff0c;外接物理键盘&#xff0c;如USB键盘&#xff0c;输入时会弹出软键盘。 这个选…

操作系统学习笔记第2章 (竟成)

第 2 章 进程管理 【考纲内容】 1.进程与线程&#xff1a; (1) 进程 / 线程的基本概念&#xff1b; (2) 进程 / 线程的状态与转换&#xff1b; (3) 线程的实现&#xff1a;内核支持的线程&#xff1b;线程库支持的线程&#xff1b; (4) 进程与线程的组织与控制&#xff1b; (5)…

复合机器人案例启示:富唯智能如何以模块化创新引领工业自动化新标杆

在国产工业机器人加速突围的浪潮中&#xff0c;富唯智能复合机器人案例凭借其高精度焊接与智能控制技术&#xff0c;成为行业标杆。然而&#xff0c;随着制造业对柔性化、全场景协作需求的升级&#xff0c;复合机器人正从单一功能向多模态协同进化。作为这一领域的创新者&#…

Linux在web下http加密和配置虚拟主机及动态页面发布

web服务器的数据加密 1.简介&#xff1a;由于http协议以明文方式发送&#xff0c;不提供任何方式的数据加密&#xff0c;也不适合传输一些重要的信息&#xff0c;如银行卡号、密码等&#xff0c;解决该缺陷设计了安全套接字层超文本传输协议https&#xff1b; 2.https的握手流…

C++ learning day 02

目录 引言 编译定义&#xff1a; 查看obj文件 1. 禁用预处理 2. CTRL F7 编译math.cpp 3. 查看obj文件 4. 查看.asm文件&#xff08;汇编程序&#xff09; 引言 今天介绍C中&#xff0c;一个Cpp文件经过汇编后得到obj文件&#xff0c;以及obj文件的内容&a…

使用fdisk 、gdisk管理分区

用 fdisk 管理分区 fdisk 命令工具默认将磁盘划分为 mbr 格式的分区 命令&#xff1a; fdisk 设备名 fdisk 命令以交互方式进行操作的&#xff0c;在菜单中选择相应功能键即可 [rootlocalhost ~]# fdisk /dev/sda # 对 sda 进行分区 Command (m for help): # 进入 fdis…

如何通过C# 获取Excel单元格的数据类型

在处理 Excel 文件时&#xff0c;了解单元格的数据类型有助于我们正确地解析和处理数据。Free Spire.XLS 是一款功能强大且免费的.NET 组件&#xff0c;支持高效地操作 Excel 文件&#xff0c;包括读取单元格类型。本文将详细介绍如何使用 Free Spire.XLS 来获取 Excel 单元格的…

Fiori学习专题三十九:使用标准模板创建一个应用程序

之前的课程我们按照教程一步一步创建了我们的一个应用程序&#xff0c;但是总不能每次开发都像这样子来做&#xff0c;那样就太慢了。事实上MVC架构的应用程序&#xff0c;是有很多模板&#xff0c;今天我们就按照模板来创建一个应用程序。 开发工具还是使用vscode&#xff0c;…

模型 启动效应

系列文章分享模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。刺激先行激活&#xff0c;后续认知更顺畅。 1 启动效应的应用 1.1 求职面试中对面试官的影响 背景&#xff1a;一家知名公司在招聘过程中发现&#xff0c;面试官对候选人的评价往往受到多种因素的影响…

【前端分享】CSS实现3种翻页效果类型,附源码!

使用 css 可以实现多种翻页效果&#xff0c;比如书本翻页、卡片翻转等。以下是两种常见的翻页效果实现&#xff1a; 效果 1&#xff1a;书本翻页效果 通过 transform 和 rotateY 实现 3D 翻页效果。 html 结构 <divclass"book"> <divclass"page pa…