最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java的輸入輸出模板(ACM模式)實(shí)例代碼

 更新時(shí)間:2025年09月09日 11:35:59   作者:一坤年java抽象練習(xí)生  
由于ACM競(jìng)賽題目的輸入數(shù)據(jù)和輸出數(shù)據(jù)一般有多組(不定),并且格式多種多樣,所以,如何處理題目的輸入輸出是對(duì)大家的一項(xiàng)最基本的要求,下面這篇文章主要介紹了java輸入輸出模板(ACM模式)的相關(guān)資料,需要的朋友可以參考下

面試有時(shí)候要acm模式,刷慣leetcode可能會(huì)手生不會(huì)acm模式,該文直接通過(guò)幾個(gè)題來(lái)熟悉java的輸入輸出模板,多寫(xiě)幾遍,熟悉即可。

1、前置準(zhǔn)備

首先我們需要熟悉在沒(méi)有idea的情況下如何手寫(xiě)并編譯運(yùn)行一個(gè).java文件。

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

每個(gè).java文件必須有一個(gè)類我們一般命名為Main,文件名與代碼中的類名必須一樣。

命令行輸入命令:

javac Main.java

生成Main.class的class文件,隨后輸入:

java Main

即可運(yùn)行程序

2、普通輸入輸出API

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

不管如何,最開(kāi)頭這兩個(gè)頭文件都這樣引入即可,這兩個(gè)基本都會(huì)用到。

①、輸入API

獲取不同類型數(shù)據(jù)要使用nextXxx()的api。

示例代碼:

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); //用于從控制臺(tái)讀入數(shù)據(jù)
        //獲取int類型數(shù)據(jù)
        Integer a = sc.nextInt();
        //獲取Double類型數(shù)據(jù)
        Double d = sc.nextDouble();
        //獲取long類型數(shù)據(jù)
        long l = sc.nextLong();
        //獲取short類型數(shù)據(jù)
        short b = sc.nextShort();
        System.out.print(a + " " + d + " " + l + " " + b + " ");
    }

運(yùn)行結(jié)果:

獲取字符串需要用到兩個(gè)api:

①、in.next() 從緩沖區(qū)接收字符遇到空格后停止。 相當(dāng)于 cin 和 scanf

②、in.nextLine() 從緩沖區(qū)接收字符,并且接收空格,遇到換行才停止,并且會(huì)自動(dòng)舍棄換行。 相當(dāng)于 gets()

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); //用于從控制臺(tái)讀入數(shù)據(jù)
        String x = sc.next();
        String s = sc.nextLine();
        System.out.println("x: " + x);
        System.out.println("s: " + s);
    }

運(yùn)行結(jié)果:

可以看到next()遇到空格就會(huì)暫停,而nextLine()遇到換行就會(huì)暫停。

②、輸出API

輸出有三種形式;

System.out.print(); // 最后打印結(jié)果不會(huì)加換行

System.out.println(); // 最后打印結(jié)果加換行

System.out.printf(); // 類似c語(yǔ)言中的printf。

直接代碼中來(lái)看:

①、

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

運(yùn)行結(jié)果:

0 1 2 

②、

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

運(yùn)行結(jié)果:



③、

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

運(yùn)行結(jié)果:

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 + " ");
        }
    }

運(yùn)行結(jié)果:

補(bǔ)充:in.read()方法返回值為Integer,用于讀取整數(shù)。

②、BufferedWriter

當(dāng)數(shù)據(jù)量大的時(shí)候一定要使用這個(gè)類進(jìn)行輸出,謹(jǐn)記!

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();
    }

運(yùn)行結(jié)果:

D
2
3

在輸出整型要注意,會(huì)輸出對(duì)應(yīng)ASCII碼值的字符,比如ASCII碼值為68的字符是D。

解決方式:

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

盡量將其轉(zhuǎn)為字符串進(jìn)行輸出。

輸出結(jié)果:

68

案例

通過(guò)一道算法題,來(lái)練習(xí)熟悉一下api。

題目描述

給定你一個(gè)長(zhǎng)度為 n的整數(shù)數(shù)列。

請(qǐng)你使用快速排序對(duì)這個(gè)數(shù)列按照從小到大進(jìn)行排序。

并將排好序的數(shù)列按順序輸出。

輸入格式
輸入共兩行,第一行包含整數(shù) n。

第二行包含 n個(gè)整數(shù)(所有整數(shù)均在 1∼109范圍內(nèi)),表示整個(gè)數(shù)列。

輸出格式
輸出共一行,包含 n個(gè)整數(shù),表示排好序的數(shù)列。

數(shù)據(jù)范圍
1≤n≤100000

輸入樣例:
5
3 1 2 4 5
輸出樣例:
1 2 3 4 5

代碼

這里可以將new Inputstream()用new BufferedInputStream()來(lái)替代,讀取速度更快。

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);
    }
    
}

附:ACM基本的模版

public class Main {

    public static void main(String[] args) {
        //1.數(shù)據(jù)輸入
        Scanner in = new Scanner(System.in);
        //讀數(shù)字
        int numLen = in.nextInt();
        int[] numArr = new int[numLen];
        int i = 0;
        while(in.hasNextInt() && i < numLen){
            numArr[i] = in.nextInt();
            i++;
        }
        //讀字符串
        int strLen = in.nextInt();
        in.nextLine(); //數(shù)字到字符串要換行
        String[] strArr = new String[strLen];
        //或者 strArr[] = in.nextLine().split(" ");
        int j = 0;
        while(in.hasNextLine() && j < strLen){
            strArr[j] = in.nextLine();
            j++;
        }
        
        //2. 處理
        Solution solution = new Solution();
        String result = solution.process(numArr, strArr);
        
        //3. 輸出
        System.out.println(result);
        //四舍五入輸出小數(shù)
        String str = String.format("%.2f",3.555);
        System.out.println(str);
    }
}

//下面類似 LeetCode 的核心代碼模式
class Solution {
    public String process(int[] nums, String[] strs) {
        StringBuilder sb = new StringBuilder();
        sb.append(Arrays.toString(nums));
        sb.append(" && ");
        sb.append(Arrays.toString(strs));
        return sb.toString();
    }
}

總結(jié) 

到此這篇關(guān)于java的輸入輸出模板(ACM模式)的文章就介紹到這了,更多相關(guān)java輸入輸出模板內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java lambda表達(dá)式實(shí)現(xiàn)Flink WordCount過(guò)程解析

    Java lambda表達(dá)式實(shí)現(xiàn)Flink WordCount過(guò)程解析

    這篇文章主要介紹了Java lambda表達(dá)式實(shí)現(xiàn)Flink WordCount過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • shuffle的關(guān)鍵階段sort(Map端和Reduce端)源碼分析

    shuffle的關(guān)鍵階段sort(Map端和Reduce端)源碼分析

    今天小編就為大家分享一篇關(guān)于shuffle的關(guān)鍵階段sort(Map端和Reduce端)源碼分析,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Java簡(jiǎn)單實(shí)現(xiàn)線程池

    Java簡(jiǎn)單實(shí)現(xiàn)線程池

    這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)單實(shí)現(xiàn)線程池,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Java使用JCommander實(shí)現(xiàn)解析命令行參數(shù)

    Java使用JCommander實(shí)現(xiàn)解析命令行參數(shù)

    jcommander?是一個(gè)只有幾十?kb?的?Java?命令行參數(shù)解析工具,可以通過(guò)注解的方式快速實(shí)現(xiàn)命令行參數(shù)解析,本文就來(lái)和大家介紹一下JCommander是如何解析命令行參數(shù)吧
    2023-06-06
  • springboot整合jquery和bootstrap框架過(guò)程圖解

    springboot整合jquery和bootstrap框架過(guò)程圖解

    這篇文章主要介紹了springboot整合jquery和bootstrap框架過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Hibernate三種狀態(tài)和Session常用的方法

    Hibernate三種狀態(tài)和Session常用的方法

    本文主要介紹了Hibernate三種狀態(tài)和Session常用的方法,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-03-03
  • MyBatis-Plus實(shí)現(xiàn)自動(dòng)填充功能的示例代碼

    MyBatis-Plus實(shí)現(xiàn)自動(dòng)填充功能的示例代碼

    在數(shù)據(jù)庫(kù)設(shè)計(jì)中,常常有一些字段每次都需要賦值,如創(chuàng)建時(shí)間、更新時(shí)間、操作人、刪除標(biāo)識(shí)等,有沒(méi)有框架級(jí)的技術(shù),全局處理這樣的統(tǒng)一字段呢?當(dāng)然有,Mybatis-Plus自動(dòng)填充技術(shù)幫我們解決問(wèn)題,本文給大家詳細(xì)介紹了MyBatis-Plus實(shí)現(xiàn)自動(dòng)填充功能,需要的朋友可以參考下
    2025-07-07
  • Gradle的安裝和IDEA集成、項(xiàng)目導(dǎo)入的詳細(xì)教程

    Gradle的安裝和IDEA集成、項(xiàng)目導(dǎo)入的詳細(xì)教程

    這篇文章主要介紹了Gradle的安裝和IDEA集成、項(xiàng)目導(dǎo)入的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Springboot獲取bean實(shí)例之SpringContextUtil詳解

    Springboot獲取bean實(shí)例之SpringContextUtil詳解

    這篇文章主要介紹了Springboot獲取bean實(shí)例之SpringContextUtil使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Java的Hibernate框架中的基本映射用法講解

    Java的Hibernate框架中的基本映射用法講解

    映射是Hibernate框架操作數(shù)據(jù)庫(kù)數(shù)據(jù)的重要特性之一,這里我們來(lái)看一下Java的Hibernate框架中的基本映射用法講解,包括最基本的單向一對(duì)一與多對(duì)一映射關(guān)系等:
    2016-07-07

最新評(píng)論

通渭县| 杭州市| 罗山县| 迁西县| 民和| 马关县| 吉首市| 车致| 荣成市| 青海省| 淳安县| 红河县| 台南县| 彭泽县| 潼关县| 岳西县| 鄂温| 吴旗县| 石柱| 辛集市| 海盐县| 惠来县| 松潘县| 水城县| 苍梧县| 平塘县| 澄迈县| 唐河县| 阳江市| 湖南省| 绥宁县| 陆良县| 英吉沙县| 卓资县| 剑川县| 泌阳县| 阿克| 荔波县| 包头市| 宜州市| 油尖旺区|