簡體   English   中英

在 IntelliJ 中使用 CHelper 插件進行編碼競賽

[英]Using CHelper plugin in IntelliJ for a coding contest

我最近發現了一個編碼比賽的編碼網站: CodinGame ,為了解決問題,我們只需要交出一個帶有 main 的文件(在下面的例子中,類Player ),如果其他類是需要,我們將它們包含在此文件中。

為此(並且被視為在另一個編碼站點工作),我下載了 intelliJ 和插件 CHelper ,以便將所有源文件放入一個 java 文件中(這應該是 CHelper 插件的目的)。 問題是:我不明白如何為我的編碼站點使用/設置這個插件。 我知道它應該可以工作,因為該站點的另一個用戶已經為此目的使用了該插件。

我想要什么

有關我想要的更詳細的示例,這里是具有主要內容的類:

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

而這個類 Cell 在另一個 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+"]";
    }
}

我希望插件合並兩個(或更多)java文件,以便:

// Generated : 2 files merged into one file: Player.java
public class Player {
    public static void main(String[] args) {
        System.out.println(new Cell(1,2).toString());
    }

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

我取得的成就

我正確安裝了 IntelliJ,並下載了 CHelper 插件。 我安裝了鏈接到 TopCoder 的工具欄菜單按鈕(該插件專門用於該站點),但是 Launch TopCoder 按鈕會拋出 RuntimeException : cannot run program .../javaws no such file。 通過從 TopCoder 下載一些任務,我成功地將 2 個文件合並為一個:TaskA.java 到 Main.java(已下載模板)

什么是理想的

如果Eclipse插件可以像我想要的那樣工作,我會很高興知道它。 事實上,這正是我搜索開始時所尋找的,我只找到了一些 IntelliJ IDE 的插件。

所以我終於找到了一種方法來做我想做的事:做這件事的人給我分享了一個我需要幫助鏈接

我將在這里專門針對CodinGame進行總結。

I- 工具欄按鈕

添加到菜單工具欄的重要按鈕是

  • 創建新任務
  • 修改任務
  • 刪除任務
  • 編輯項目設置

現在,我們在紅色矩形中有一些按鈕: 工具欄創意

II- 編輯設置

然后我們必須edit project settings

  • 將默認目錄設置為您的默認包
  • 輸出目錄用於生成的源文件

編輯項目設置

III- 創建任務

接下來,我們必須創建一個新任務(綠色的“+”按鈕)並使用advanced選項進行設置。 我們使用按鈕Edit tests添加測試輸入和已知輸出。 我們說我們希望生成的文件被稱為Solution.java ,我們將要編寫的類將被稱為CGXFormatter.java

創建新任務

我們現在有兩個文件出現在我們的包.../puzzle

  • CGXFormatter.java帶有一個方法solve ,我們將在這里讀取輸入並在輸出中給出我們的答案
  • CGXFormatter.task ,其中包含有關測試用例等的信息,以便插件生成源文件

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就完成了。 如果你願意,你也可以把它放在一個腳本中,用 multirun 自動完成(插件也可以安裝在 IDEA 中)。

就是這樣,你完成了。

VII- 2019 年 10 月編輯

如果插件抱怨找不到net.egork....類,您可以添加我在此處找到的這些步驟

將 Intellij IDEA 更新到最新版本。 其次,您轉到File -> Settings... -> Plugins並搜索 chelper 插件。 它是運行任務運行配置所必需的,它也為您提供工具欄上的按鈕。 完成此操作后,您應該會收到有關無法從 net.egork 查找和加載類的錯誤信息...現在您轉到 jetbrains 插件站點,在那里搜索 chelper 插件,然后下載最新的 zip 存檔。 解壓縮后,轉到File -> Project Structure... -> Libraries -> + -> Java ,遞歸選擇剛剛解壓縮的文件夾,直到找到一堆包含錯誤中缺少的類的 jar。 將這些 jars 與 JDK 一起添加到類路徑后,就足夠了


作為旁注,我指出out.println沒有按我的預期工作(我不知道為什么),所以我用System.out.println代替了它,而不是在solve方法中使用建議的out對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM