[伯俊]1000号-Java


2021.09.15の作成

質問する



いよいよ入出力を受信する問題です.
普通のI/Oと高速I/Oで問題を解決するつもりです.

コード#コード#

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        /* 일반 입출력 */
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        System.out.println(a+b);

    }
}
デフォルトでは、整数a、b変数を入力し、2つの数値を出力します.
import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        /* 빠른 입출력 */
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(bf.readLine());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int sum = a + b;
        bw.write(String.valueOf(sum)); 
        bw.flush();
        bw.close();
    }
}
BufferedReaderはクイック入力として宣言され、BufferedWriterはクイック出力として宣言されます.
BufferedReaderはBRです.入力はreadLine()で受け付けますが、無条件に文字列で受け付けますので、整数形式に変更します.
また,問題の入力条件から,「1行目はAとBを与える.に表示されます.ただし、BufferedReaderはScannerと異なり、1行で複数の入力を受信できないため、文字を区切るにはStringTokenizerクラスを使用します.
StringTokenizer st = new StringTokenizer(bf.readLine());
このフレーズでは、bfの場合.readLine()に「12」と入力すると、StringTokenIzerと宣言されたstには文字列「12」が割り当てられます.
2行のコードを見て
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
Integer.parseIntは、先ほどのreadLine()が文字列であり、stも文字列であるため、整数型に変換するために使用しなければならないが、st.nextToken()はスペースベースで区切られているため、aはint型1 bをint型2に置き換える.
最後に一つ見たら.
bw.write(String.valueOf(sum));
BufferedWriterは文字列しか出力できません.sumを文字列に変換して出力する必要があります.

結果



発行番号3333336529-一般入力
コミット番号3333336562-クイック入力
いずれにしても入力から普通と快速の差が大きいようです.