首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java實現多組數據求和:Scanner循環讀取與字符串解析

     編輯:程式設計綜合問答

需求

輸入多行,每行兩個整數(空格分隔),輸出每行兩數之和,每行一個結果。

標準解法

import java.util.Scanner;

public class SumPairs {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {           // 按行讀取,直到EOF
            String line = sc.nextLine().trim();
            if (line.isEmpty()) continue;    // 跳過空行
            
            String[] parts = line.split("\\s+"); // 正則匹配多個空格
            if (parts.length < 2) continue;  // 格式校驗
            
            try {
                int a = Integer.parseInt(parts[0]);
                int b = Integer.parseInt(parts[1]);
                System.out.println(a + b);
            } catch (NumberFormatException e) {
                System.err.println("非整數輸入: " + line);
            }
        }
        sc.close();
    }
}

關鍵點

  • sc.hasNextLine()配合nextLine()逐行處理,適用重定向文件輸入java SumPairs < data.txt。
  • split("\\s+")兼容任意數量空格/制表符分隔。
  • 異常捕獲保證單行錯誤不影響後續處理。

進階:高性能IO(大數據量)

// BufferedReader + StringTokenizer 更快
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = br.readLine()) != null) {
    StringTokenizer st = new StringTokenizer(line);
    if (st.countTokens() >= 2) {
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        System.out.println(a + b);
    }
}

在線判題系統注意事項

  1. 無需提示語System.out.print("請輸入..."),直接讀取標準輸入。
  2. 輸出格式嚴格匹配:每行一個結果,無多餘空格/空行。
  3. 主類名通常為Main,包名為默認包。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved