2016-07-20 4 views
8

コーディングサイトを発見したばかりのコーディングサイトは、CodinGameです。問題を解決するために、以下のように1つのファイルのみを渡す必要がありますたとえば、クラスPlayer)、他のクラスが必要な場合は、それらをこのファイルに含めます。IntelliJでコーディングコンテスト用のCHELPERプラグインを使用する

この目的のために(私はanother coding siteのために働いていました)、すべてのソースファイルを1つのJavaファイルに入れるためにintelliJとplugin CHelperをダウンロードしました(CHELPERプラグインの目的になっています)。問題は次のとおりです。コーディングサイトにこのプラグインを使用する方法を理解できません。このサイトの別のユーザーがこの目的のために既にプラグインを使用しているため、このプラグインが機能するはずです。私は私が何をしたいのより詳細な例については

欲しい

は、ここでの主とクラスです:

// Class Player in file Player.java 
public class Player { 
    public static void main(String[] args) { 
     System.out.println(new Cell(1,2).toString()); 
    } 
} 

そして、このクラスの細胞は、別のJavaファイルである:

// Class Cell in file Cell.java 
public class Cell { 
    int x,y; 
    public Cell(int x, int y) { 
     this.x = x; 
     this.y = y; 
    } 
    public String toString() { 
     return "["+x+","+y+"]"; 
    } 
} 

そして、この2つ(またはそれ以上)のJavaファイルをマージするようにプラグインしたいと思います。

私は私が正しくIntelliJのをインストールし、そしてCHelperプラグインをダウンロードし

を達成何

。 TopCoder(このプラグインが明示的に作成されているサイト)にリンクされているツールバーメニューボタンをインストールしましたが、Launch TopCoderボタンがRuntimeExceptionをスローします:プログラムを実行できません.../javawsそのようなファイルはありません。トップコーダーからダウンロードしたいくつかのタスクで は、私は1つに2つのファイルをマージすることに成功しました:(ダウンロードしたテンプレートと)Main.javaにTaskA.java

のEclipseプラグインはのように働くことができれば

理想的である何私が欲しいものは、私はそれを知って非常に満足しています。実際、それは私の検索の始めに私が探していたもので、IntelliJ IDE用のプラグインしか見つけられませんでした。

+0

このプラグインを使用しているプロジェクトをまだ作成していない場合は、 'class'キーワードの前に' static'を付けるだけで、このクラスを囲むクラスとは独立したものにする方が簡単です。これにより、囲むクラスのインスタンスが、そのクラスに含まれるクラスのインスタンスから独立していることが保証されます。たとえば、コード内の 'Cell'クラスの接頭辞は' static'です。 –

+0

さて、このプラグインは本当に "正しく"コーディングするためのものです。私は別のファイル(各クラス別のファイル)でクラスを分離し、このツールで1つのファイルにマージすることができるようにしたいと思います。 私は、マージされたコードに 'Cell'クラスの' static'を置くべきであり、実際には実際のPlayerクラス(手動で)に持っているはずです。 私はPlayerクラスの内部に7つの内部クラスのようなものを持っています。そのため、それらを分離したい(汚れの少ないコード)と、簡単にそれらをテストできるようにしたいのです。 – OroshiX

答えて

6

私は最終的に私が望むことをする方法を見つけました。それをした人は私を共有しましたlink to the help私は必要でした。

ここでは具体的にはCodinGameについてまとめています。

I-ツールバーボタン

メニューのツールバーに追加する重要なボタン

  • は、タスク
  • 削除タスクに
  • 編集プロジェクト設定
を変更し、新しいタスク
  • を作成しています

    今、私たちはhav電子赤枠内のいくつかのボタン: toolbar IDEA

    II-設定を編集します

    はその後、我々はedit project settingsに持っている:

    • 出力ディレクトリがためには、あなたのデフォルトのパッケージにデフォルトのディレクトリを設定します生成されたソースファイル

    Editing project settings

    III-タスク

    次のものを作成し、我々は新しいタスク(緑の「+」ボタン)を作成し、advancedオプションを使用してそれを設定する必要があります。テストの入力と既知の出力をボタンEdit testsで追加します。我々はSolution.javaと呼ばれる生成されたファイルを欲しいと言って、私たちは書き込みしようとしているクラスがCGXFormatter.java

    Creating a new task

    と呼ばれるように起こっている私たちは、今、私たちのパッケージ.../puzzleに登場した2つのファイルがあります。

    を私たちは入力を読み、情報Oを含む出力
  • CGXFormatter.task、私たちに答えを与えるしようとしているある方法solve、と
    • CGXFormatter.java n個のテストケースでは、など。例えば、あなたのソリューション

      を書くIV-ソースファイル

    を生成するためのプラグインのために、私達はちょうど私たちのCGXFormatterに「これは結果であり、」印刷しようとしています(ただし、別のクラスファイルを作成して呼び出すこともできましたが、生成されたクラスのクラスの定義をコピーすることで機能しました)。このように:

    package com......puzzle; 
    
    import java.util.Scanner; 
    import java.io.PrintWriter; 
    
    public class CGXFormatter { 
        public void solve(int testNumber, Scanner in, PrintWriter out) { 
         out.println("This is the result"); 
        } 
    } 
    

    V-ソリューション

    最終ステップを生成します。実行をクリックしてください。次にディレクトリgeneratedが作成され、そこには新たにSolution.javaファイルが生成されます。私たちは、これを読むことができます。

    import java.io.OutputStream; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.PrintWriter; 
    import java.util.Scanner; 
    
    /** 
    * Built using CHelper plug-in 
    * Actual solution is at the top 
    * 
    * @author XXX 
    */ 
    public class Solution { 
        public static void main(String[] args) { 
         InputStream inputStream = System.in; 
         OutputStream outputStream = System.out; 
         Scanner in = new Scanner(inputStream); 
         PrintWriter out = new PrintWriter(outputStream); 
         CGXFormatter solver = new CGXFormatter(); 
         try { 
          int testNumber = 1; 
          while (true) 
           solver.solve(testNumber++, in, out); 
         } catch (UnknownError e) { 
          out.close(); 
         } 
        } 
    
        static class CGXFormatter { 
         public void solve(int testNumber, Scanner in, PrintWriter out) { 
          out.println("This is the result"); 
         } 
    
        } 
    } 
    

    VI-最終ステップ

    さて、まだ少し問題が残っている:CodinGameで、ソリューションのクラスは、その前にpublicを持つべきではない、これだけの代わりにclass Solutionを置きますpublic class Solutionと完了です。 必要に応じて、マルチラン(IDEAにインストールするプラグイン)を使用して自動的に行うスクリプトに入れることもできます。

    これで完了です。サイドノートとして


    、私は(私はなぜ知らない)ことを目的としてout.printlnが機能しなかったと述べたので、私が代わりに提案outオブジェクトを使用するのでSystem.out.printlnことによってそれを置き換えますsolveメソッド。

  • 関連する問題