🎃

[AtCoder初心者向け] VS Codeでのコードテストの実施方法 [Java]

に公開

はじめに

こんにちは。
プログラミング初心者wakinozaと申します。
Java勉強中に調べたことを記事にまとめています。

十分気をつけて執筆していますが、なにぶん初心者が書いた記事なので、理解が浅い点などあるかと思います。
間違い等あれば、指摘いただけると助かります。

記事を参考にされる方は、初心者の記事であることを念頭において、お読みいただけると幸いです。

対象読者

  • AtCoderを始めたばかりの方
  • プログラミングコンテストのコードを、VS Codeで書いて、テストまで行いたい方

動作環境

  • MacBook(Intel CPU 搭載)
  • Visual Studio Code
  • Oracle Java 21

記事のテーマ

  • AtCoderのABCコンテストに参加しています。
  • これまで、テストは公式HPのコードテスト画面で行なっていました。しかし、コンテスト中は混み合うため、テストの待ち時間が長くなりがちです。
  • テストの待ち時間を短縮できないかと考え、VS Codeでコードテストを行う方法を見つけました。この記事は、その方法の備忘録として書いています。
  • より効率の良いやり方がありそうなので、今後も効率化していきたいです。

本文

本記事では、ローカルでのテスト実行に焦点を当てるため、Java環境構築は以下の記事を参照してください。

https://tenshoku.mynavi.jp/engineer/guide/articles/ZzLvpREAACYAoyRc

フォルダとファイルを作成

まず、VS Codeのターミナルを開き、新しいフォルダ(contestとします)を作成します。
VS Codeのターミナルは、メニューバーの「ターミナル」→「新しいターミナル」を選択して開きます。

mkdir contest

VS Codeのメニューバー「ファイル」→「ファイルを開く」を選択し、作成したフォルダ「contest」を開きます。

次に、開いた「contest」フォルダ内に、Javaファイルを作成します。
VS Codeで「新しいファイルを作成」ボタンを選択し、ファイル名( Main.javaとします)を入力します。

さらに、同じ「contest」フォルダ内に、テストデータを記述するためのテキストファイルを準備しておきます。
ファイル名は「test.txt」とします。
この時点では、ファイルに何も記述していなくても大丈夫です。

コードを記述

例えば、以下のようなコードを準備しておくと、コンテストがスムーズに進められます。

//デフォルトのコード例
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        String s = scanner.next();

        scanner.close();
    }
} 

コンテストが始まれば、問題を確認して、VS Codeに解答コードを記述します。

コードをテスト

解答コードが完成したら、試したいテストデータの入力例をコピーし、準備しておいた「test.txt」ファイルにペーストします。

次に、VS Codeのターミナルを開き、ファイルをコンパイルします。

javac Main.java

そして、ターミナルで、コンパイルされたクラスファイルを実行します。
クラスファイル実行時には、拡張子「.class」は記述せず、ファイル名のみ記述します。
この時、リダイレクト演算子「<」を使って 「test.txt」の内容も渡します。
なお、リダイレクト演算子とは、標準入力(System.in)を経由してファイルの内容を読み込ませるための仕組みです。

java Main < test.txt

クラスファイルを実行すると、ターミナルに実行結果が表示されます。

コードを変更せず、複数のデータでテストを行う場合は、test.txtを新しいデータに置き換えて、同様にクラスファイルを実行します。再コンパイルは不要です。
コードを変更した場合は、コンパイルからやり直します。

十分にテストを実行できたら、解答コードを公式サイトにコピーペーストして提出します。

もし、ファイル名(クラス名)をMain以外にした場合は、公式サイトにコピーペーストした後、提出前にクラス名を「Main」に変更しましょう。
クラス名がMain以外だと、エラーになります。


記事は以上です。
最後までお読みいただき、ありがとうございました。

GitHubで編集を提案

Discussion