Java算法題中的輸入輸出流

在Java算法題中,處理輸入輸出主要依賴系統流(System.inSystem.out),常用的方法總結如下:

一、輸入方法(讀取系統輸入)

主要通過java.util.Scanner類或BufferedReader類實現,適用于不同場景:

1. Scanner類(簡單場景,代碼簡潔)

最常用的輸入工具,支持多種數據類型的直接讀取,常用方法:

  • nextInt():讀取整數(int
  • nextLong():讀取長整數(long
  • nextDouble()/nextFloat():讀取浮點數
  • next():讀取字符串(以空格/回車為分隔符)
  • nextLine():讀取一整行字符串(包括空格)
  • hasNextXxx():判斷是否還有對應類型的輸入(循環讀取時常用)
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int a = sc.nextInt();               // 讀整數String s = sc.next();               // 讀字符串double d = sc.nextDouble();         // 讀浮點數// 循環讀取多個整數(直到沒有輸入)while (sc.hasNextInt()) {int num = sc.nextInt();// 處理邏輯}sc.close(); // 建議關閉資源}
}
2. BufferedReader類(高效場景,大輸入量)
  • 基于字符流的緩沖輸入,速度快于Scanner,適合大規模輸入(如十萬級數據)
  • 需要配合InputStreamReader轉換流使用,且讀取后需手動轉換數據類型
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 讀取一行字符串(返回null表示輸入結束)String line = br.readLine();// 讀取整數(需手動轉換)int num = Integer.parseInt(br.readLine());// 循環讀取多行String s;while ((s = br.readLine()) != null) {// 處理每行數據}br.close(); // 關閉資源}
}

二、輸出方法(寫入系統輸出)

主要通過System.out相關方法實現,常用:

1. print() / println()(簡單輸出)
  • print(x):輸出數據x,不換行
  • println(x):輸出數據x并換行(最常用)
  • 支持直接輸出基本類型、字符串、對象(會自動調用toString()
System.out.print("Hello");   // 輸出不換行
System.out.println(123);     // 輸出整數并換行
System.out.println("World"); // 輸出字符串并換行
2. printf()(格式化輸出)
  • 類似C語言的printf,支持格式控制符(如%d整數、%s字符串、%f浮點數等)
  • 適合需要固定格式的輸出(如保留小數位、對齊等)
int a = 10;
double b = 3.14159;
System.out.printf("整數:%d,浮點數:%.2f%n", a, b); 
// 輸出:整數:10,浮點數:3.14(%n表示換行,跨平臺)
3. BufferedWriter類(高效輸出,大輸出量)
  • 緩沖輸出流,速度快于System.out,適合大規模輸出
  • 需手動調用flush()刷新緩沖區(或關閉流時自動刷新)
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;public class Main {public static void main(String[] args) throws IOException {BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));bw.write("Hello");   // 寫入字符串bw.newLine();        // 換行(跨平臺)bw.write(String.valueOf(123)); // 寫入整數(需轉為字符串)bw.flush(); // 刷新緩沖區(必須調用,否則可能不輸出)bw.close(); // 關閉流(會自動刷新)}
}

三、選擇建議

  1. 小規模輸入輸出:優先用Scanner + System.out.println(),代碼簡潔易寫。
  2. 大規模輸入(如算法競賽):用BufferedReader(讀)+ BufferedWriter(寫),效率更高。
  3. 格式化輸出:用System.out.printf(),控制格式更方便。

這些方法基本能覆蓋Java算法題中所有輸入輸出場景,掌握后可高效處理各類數據讀寫需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96438.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96438.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96438.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

墨水屏程序

EPD Reader 基于ESP32-C3的電子墨水屏閱讀器,支持ap 配網、sntp 時間同步、txt閱讀、天氣預報、顯示節假日信息、農歷顯示、自動休眠、web配置等功能。這是在另一個項目 一個rust embassy esp32c3 的練習項目-CSDN博客的基礎上修改的 。 界面比較粗糙,以…

Git 創建 SSH 密鑰

1.生成 SSH 密鑰 打開 Git Bash ssh-keygen -t ed25519 -C "your_email@example.com" 把 ”your_email@example.com“ 改成再 github 注冊的郵箱 系統會提示您三次輸入: 第一個提示:Enter file in which to save the key (/c/Users/86189/.ssh/id_ed25519): 直接…

當前 AI 的主流應用場景

當前AI技術已深度滲透至社會各領域,2025年的主流應用場景呈現出行業垂直化、交互自然化、決策自主化三大特征。以下從六大核心領域展開分析,結合最新技術突破與規模化落地案例,揭示AI如何重塑人類生產生活范式: 一、智能辦公與生產力革命 AI正從工具升級為「數字同事」,…

EI會議:第六屆電信、光學、計算機科學國際會議(TOCS 2025)

第六屆電信、光學、計算機科學國際會議(TOCS 2025)定于11月21-23日在中國南陽舉行,本屆會議以“電信、光學、計算機科學”為主題,旨在為相關領域的專家和學者提供一個探討行業熱點問題,促進科技進步,增加科…

回歸預測 | MATLAB基于GRU-Attention的多輸入單輸出回歸預測

代碼是一個基于 MATLAB 的深度學習時間序列預測模型,結合了 GRU(門控循環單元)和自注意力機制(Self-Attention),用于回歸預測任務。 一、主要功能 使用 GRU + Self-Attention 神經網絡模型對時間序列數據進行回歸預測,評估模型在訓練集和測試集上的性能,并可視化預測結…

【JavaEE】(24) Linux 基礎使用和程序部署

一、Linux 背景知識 Linux 的第一個版本開發者是 Linus,所以部分人會叫“林納斯”。Linux 只是一個開源的操作系統內核,有些公司/開源組織基于 Linux 內核,配套了不同的應用程序,構成不同的操作系統(比如 vivo、&#…

視覺SLAM第9講:后端1(EKF、非線性優化)

目標: 1.理解后端的概念; 2.理解以EKF為代表的濾波器后端的工作原理; 3.理解非線性優化的后端,明白稀疏性是如何利用的; 4.使用g2o和Ceres實際操作后端優化。 9.1 概述 9.1.1 狀態估計的概率解釋 1.后端優化引出 前段…

樓宇自控系統監控建筑變配電系統:功效體現在安全與節能層面

建筑變配電系統是保障建筑電力供應的 “心臟”,負責將外界高壓電轉化為建筑內設備可使用的低壓電,為暖通、照明、電梯等核心系統供電。傳統變配電管理依賴人工巡檢,不僅存在 “監測滯后、故障難預判” 的安全隱患,還因無法精準調控…

【Docker安裝使用常見問題匯總】

文章目錄1. wsl update failed: update failed:2.dockerDesktopLinuxEngine: The system cannot find the file specified.3. 中文語言包3.1. 下載中文包3.2 默認路徑如下:3.3 備份并替換 app.asar 文件:4. Get "https://registry-1.docker.io/v2/&…

Android面試指南(八)

目錄 1、Java語言相關 1.1、String的intern方法 1.2、HashMap的擴容 1.3、Java數組不支持泛型 1.4、泛型類型保留到運行時 1.5、匿名內部類使用的外部變量需要加final 2、Kotlin語言相關 3、設計模式 1、Java語言相關 1.1、String的intern方法 1)、String…

7、Matplotlib、Seaborn、Plotly數據可視化與探索性分析(探索性數據分析(EDA)方法論)

學習目標:掌握數據可視化的原理和工具,培養通過圖表洞察數據規律的能力,建立數據驅動的分析思維數據可視化是數據科學的重要組成部分,它將抽象的數字轉化為直觀的圖形,讓我們能夠快速識別模式、趨勢和異常。從基礎的柱…

Next系統學習(二)

SSR生命周期與實現詳細解答 19. 如果不使用框架,如何從零用React/VueNode.js實現一個簡單的SSR應用? React Node.js SSR實現步驟: 項目結構搭建 /project/client - 客戶端代碼/server - 服務端代碼/shared - 共享代碼服務端基礎設置 // server/index…

零代碼入侵:Kubernetes 部署時自動注入 kube-system UID 到 .NET 9 環境變量

在現代化 .net9 應用部署階段,零代碼入侵模式,自動獲取 kubernetes 命名空間 kube-system 的 UID,并其作為變量配置到應用。 以下是幾種實現方式: 方法一:使用 InitContainer Downward API 您可以通過 Kubernetes 的 …

基于Redis設計一個高可用的緩存

本文為您介紹,如何逐步設計一個基于Redis的高可用緩存。 目錄 業務背景 步驟一:寫一個最簡單的緩存設計 存在的問題:大量冷數據占據Redis內存 解決思路:讓緩存自主釋放 步驟二:為緩存設置超時時間 存在的問題&a…

從原理到實踐:LVS+Keepalived構建高可用負載均衡集群

從原理到實踐:LVSKeepalived構建高可用負載均衡集群 文章目錄從原理到實踐:LVSKeepalived構建高可用負載均衡集群一、為什么需要LVSKeepalived?二、核心原理:Keepalived與VRRP協議1. VRRP的核心思想2. Keepalived的三大功能三、LV…

iOS混淆工具實戰 在線教育直播類 App 的課程與互動安全防護

近年來,在線教育直播類 App 已成為學生與培訓機構的重要工具。無論是 K12 教育、職業培訓,還是興趣學習,App 中承載的課程視頻、題庫與互動邏輯都是極高價值的內容資產。 然而,教育直播應用同樣面臨多重安全風險:課程視…

第2節-過濾表中的行-BETWEEN

摘要: 在本教程中,您將學習如何在 WHERE 子句中使用 PostgreSQL 的 BETWEEN 運算符來檢查某個值是否在兩個值之間。 PostgreSQL BETWEEN 運算符 BETWEEN運算符是一種比較運算符,如果某個值介于兩個值之間,則返回true。 以下是 BETWEEN 運算符…

Windows 11 手動下載安裝配置 uv、配置國內源

Windows 11 手動下載安裝配置 uv、配置國內源 本文對應的講解視頻鏈接:https://www.bilibili.com/video/BV1WnYTzZEpW 文章目錄Windows 11 手動下載安裝配置 uv、配置國內源1. 下載、安裝、配置 uv2. 參考信息重要聲明: uv 的安裝有很多種方式&#xff…

平板熱點頻繁斷連?三步徹底解決

平板反復斷開熱點連接是一個非常常見且令人煩惱的問題。這通常不是單一原因造成的,而是多種因素疊加的結果。 我們可以從熱點發射設備(手機等)、平板本身、以及環境因素三個方面來排查和解決。 一、 熱點發射端(通常是手機&#x…

Qt文件操作的學習(三)

一、實現簡易文本編輯器 主要用到帶菜單欄的窗口,而非單一窗口。QT已經寫好相關操作,就不在重新造輪子了功能設計:新建文本文檔,打開文件,保存文件,另存為 這次不同于之前直接可以在控件上面右擊槽了&…