![](/img/trans.png)
[英]Getting test cases skipped in CHelper plugin for IntelliJ Idea
[英]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進行總結。
添加到菜單工具欄的重要按鈕是
然后我們必須edit project settings
:
接下來,我們必須創建一個新任務(綠色的“+”按鈕)並使用advanced
選項進行設置。 我們使用按鈕Edit tests
添加測試輸入和已知輸出。 我們說我們希望生成的文件被稱為Solution.java
,我們將要編寫的類將被稱為CGXFormatter.java
我們現在有兩個文件出現在我們的包.../puzzle
:
CGXFormatter.java
帶有一個方法solve
,我們將在這里讀取輸入並在輸出中給出我們的答案CGXFormatter.task
,其中包含有關測試用例等的信息,以便插件生成源文件例如,我們只是要在我們的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");
}
}
最后一步:點擊運行。 然后我們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");
}
}
}
好吧,還有一個小問題:在 CodinGame 中,解決方案類不應該在它前面有public
,所以只需將class Solution
而不是public class Solution
就完成了。 如果你願意,你也可以把它放在一個腳本中,用 multirun 自動完成(插件也可以安裝在 IDEA 中)。
就是這樣,你完成了。
如果插件抱怨找不到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.