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

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

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

面試有時候要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

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

示例代碼:

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); //用于從控制臺讀入數(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 + " ");
    }

運行結(jié)果:

獲取字符串需要用到兩個api:

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

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

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

運行結(jié)果:

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

②、輸出API

輸出有三種形式;

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

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

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

直接代碼中來看:

①、

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

運行結(jié)果:

0 1 2 

②、

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

運行結(jié)果:



③、

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

運行結(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 + " ");
        }
    }

運行結(jié)果:

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

②、BufferedWriter

當數(shù)據(jù)量大的時候一定要使用這個類進行輸出,謹記!

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

運行結(jié)果:

D
2
3

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

解決方式:

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

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

輸出結(jié)果:

68

案例

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

題目描述

給定你一個長度為 n的整數(shù)數(shù)列。

請你使用快速排序對這個數(shù)列按照從小到大進行排序。

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

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

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

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

數(shù)據(jù)范圍
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);
    }
    
}

附: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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java lambda表達式實現(xiàn)Flink WordCount過程解析

    Java lambda表達式實現(xiàn)Flink WordCount過程解析

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

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

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

    Java簡單實現(xiàn)線程池

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

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

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

    springboot整合jquery和bootstrap框架過程圖解

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

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

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

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

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

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

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

    Springboot獲取bean實例之SpringContextUtil詳解

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

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

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

最新評論

辽宁省| 南昌市| 桑日县| 阿克苏市| 濮阳县| 南投县| 凤山市| 西乌| 屏南县| 长沙县| 绥德县| 会昌县| 肇州县| 黑龙江省| 信阳市| 泸定县| 津市市| 若尔盖县| 烟台市| 石林| 宿松县| 唐海县| 汽车| 阜宁县| 罗江县| 哈尔滨市| 石棉县| 同江市| 毕节市| 葵青区| 广东省| 张掖市| 北碚区| 栖霞市| 正阳县| 武定县| 且末县| 虞城县| 田阳县| 隆子县| 新竹县|