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.mzph.cn/bicheng/80323.shtml

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

相关文章

什么是移动设备管理(MDM)

移动设备管理&#xff08;MDM&#xff09;是一种安全解决方案&#xff0c;旨在监控、管理和保护企业的移动设备&#xff08;包括智能手机、平板电脑、笔记本电脑和计算机&#xff09;。MDM软件是IT部门的关键工具&#xff0c;其核心功能包括设备配置、安全策略实施、远程控制及…

c++中构造对象实例的两种方式及其返回值

c中&#xff0c;构造对象实例有两种方式&#xff0c;一种返回对象实例&#xff0c;一种返回该对象实例的指针。如下所示&#xff1a; 一、两种返回值 RedisConn conn1; //得到实例conn1;RedisConn *conn2 new RedisConn();//得到指针conn2;RedisConn conn3 new RedisConn()…

【Unity笔记】PathCreator使用教程:用PathCreator实现自定义轨迹动画与路径控制

在Unity开发过程中&#xff0c;角色移动、摄像机动画、轨道系统、AI巡逻等功能中&#xff0c;路径控制是常见又复杂的需求之一。如何优雅、高效地创建路径并控制对象沿路径运动&#xff0c;是游戏开发、动画制作乃至工业仿真中的关键问题。 在这篇文章中&#xff0c;我将介绍一…

JAVA实战开源项目:健身房管理系统 (Vue+SpringBoot) 附源码

本文项目编号 T 180 &#xff0c;文末自助获取源码 \color{red}{T180&#xff0c;文末自助获取源码} T180&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

[人机交互]交互设计过程

*一.设计 1.1什么是设计 设计是一项创新活动&#xff0c;旨在为用户提供可用的产品 –交互设计是“设计交互式产品、以支持人们的生活和工作” 1.2设计包含的四个活动 – 识别用户的需要&#xff08; needs &#xff09;并建立需求&#xff08; requirements &…

1. 视频基础知识

1. 图像基础概念 像素&#xff1a;像素是一个图片的基本单位&#xff0c;pix是英语单词picture&#xff0c;加上英语单词“元素element”&#xff0c;就得到了pixel&#xff0c;简称px。所以“像素”有“图像元素”之意。分辨率&#xff1a;指的是图像的大小或者尺寸。比如 19…

代理IP是什么,有什么用?

一、什么是代理IP&#xff1f; 简单理解&#xff0c;代理IP是一座桥梁——你通过它连接到目标服务器&#xff0c;而不是直接暴露自己。这里的“IP”是网络世界中的地址标签&#xff0c;而代理IP在运行时&#xff0c;蹦跶到台前&#xff0c;成为目标服务器看到的那个“地址”。…

日常代码逻辑实现

日常代码逻辑实现&#xff1a; 1.防抖 解释&#xff1a; 防抖是指n秒内只执行一次&#xff0c;如果n秒内事件再次触发&#xff0c;则重新计算时间 应用场景&#xff1a; 搜索框输入联想&#xff08;避免每次按键都发送请求&#xff09;窗口尺寸调整 代码实现&#xff1a;…

北斗导航 | RTKLib中模糊度解算详解,公式,代码

模糊度解算 一、模糊度解算总体流程二、核心算法与公式推导1. **双差模糊度定义**2. **浮点解方程**三、LAMBDA算法实现细节1. **降相关变换(Z-transform)**2. **整数最小二乘搜索**3. **Ratio检验**四、部分模糊度固定(Partial Ambiguity Resolution, PAR)1. **子集选择策…

基于大模型的母婴ABO血型不合溶血病全方位预测与诊疗方案研究

目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究方法与创新点 二、母婴 ABO 血型不合溶血病概述 2.1 发病机制 2.2 临床表现 2.3 流行病学特征 三、大模型在母婴 ABO 血型不合溶血病预测中的应用 3.1 模型选择与构建 3.2 预测指标与数据输入 3.3 模…

驱动-互斥锁

互斥锁可以说是“量值” 为 1 的 信号量&#xff0c; 最终实现的效果相同&#xff0c; 既然有了信号量&#xff0c; 那为什么还要有互斥锁呢&#xff1f; 这就是我们这里需要了解并掌握的 文章目录 参考资料互斥锁的介绍互斥锁结构体 - mutex互斥锁 API互斥锁实验源码程序-mute…

人工智能100问☞第17问:智能体的定义及其基本特征?

目录 一、通俗解释 二、专业解析 三、权威参考 智能体是能够通过传感器感知环境、自主决策并借助执行器采取行动以实现特定目标的智能实体或系统。 一、通俗解释 智能体就像一台能自己“看、想、动”的智能机器。比如你手机里的语音助手&#xff0c;它能听懂你说的话&…

Linux系统入门第十一章 --Shell编程之函数与数组

一、Shell函数 1、函数的用法 Shell函数可用于存放一系列的指令。在Shell脚本执行的过程中&#xff0c;函数被置于内存中&#xff0c;每次调用函数时不需要从硬盘读取&#xff0c;因此运行的速度比较快。在Shell编程中函数并非是必须的元素&#xff0c;但使用函数可以对程序进…

Baumer工业相机堡盟工业相机的工业视觉中为什么偏爱“黑白相机”

Baumer工业相机堡盟工业相机的工业视觉中为什么偏爱“黑白相机” Baumer工业相机​为什么偏爱“黑白相机”&#xff1f;​工业视觉中为什么倾向于多使用黑白相机黑白相机在工业视觉中的应用场景有哪些&#xff1f; Baumer工业相机 工业相机是常用与工业视觉领域的常用专业视觉…

MiM: Mask in Mask Self-SupervisedPre-Training for 3D Medical Image Analysis

Abstract Vision Transformer在3D医学图像分析的自监督学习&#xff08;Self-Supervised Learning&#xff0c;SSL&#xff09;中展现了卓越的性能。掩码自编码器&#xff08;Masked Auto-Encoder&#xff0c;MAE&#xff09;用于特征预训练&#xff0c;可以进一步释放ViT在各…

SQL注入的绕过方式

1.注释与空白符绕过 利用#,--,/**/替代被过滤的注释符 利用%09&#xff08;Tab&#xff09;,%0A(换行) &#xff0c;/**/代替空格&#xff1a;如union%0Aselect%0A1,2,3 2.编码绕过&#xff1a; URL编码&#xff0c;双重编码&#xff0c;十六进制编码&#xff0c;Unicode编…

数据加密方式(对称加密/非对称加密 /数字签名/证书)

文章目录 数据加密方式常用加密方式对比哈希算法&#xff08;Hashing&#xff09;哈希算法的特点常见的哈希算法哈希算法的应用哈希与加密的区别哈希算法的安全性问题 对称加密&#xff08;Symmetric Encryption&#xff09;工作原理主要特点常见的对称加密算法优缺点 非对称加…

UnityDots学习(五)

此篇开始研究实际应用到项目或个人Demo中。参考国外CodeMonkey的RTS包含一些基础API应用。 前言 游戏不必100%使用Dots完全实现。因为面向组件开发一个功能复杂度和调试都比面向对象要更难。对于某些模块&#xff0c;比如UI&#xff0c;事件管理系统&#xff0c;网络等&#…

移动端前端开发中常用的css

在开发移动端项目的时候&#xff0c;很多样式都是相同的&#xff0c;比如说图标大小&#xff0c;头像大小&#xff0c;页面底部保存(添加按钮&#xff09;&#xff0c;项目主体颜色等等&#xff0c;对于这些在项目中常用到的&#xff0c;通常都会写在公共样式中&#xff08;pub…

Vue3 中 ref 与 reactive 的区别及底层原理详解

一、核心区别 1. 数据类型与使用场景 • ref 可定义基本类型&#xff08;字符串、数字、布尔值&#xff09;和对象类型的响应式数据。对于对象类型&#xff0c;ref 内部会自动调用 reactive 将其转换为响应式对象。 语法特点&#xff1a;需通过 .value 访问或修改数据&#…