我最近发现了一个带有编码竞赛的编码网站:CodinGame,为了解决这些问题,我们必须将它们只用一个带有main的文件(在下面的例子中,类{ {1}}),如果需要其他类,我们将它们包含在此文件中。
为了这个目的(并且被认为是为another coding site工作),我已经下载了intelliJ和plugin CHelper以便将所有源文件放入一个java文件中(它应该是CHelper插件的目的)。问题是:我不明白如何为我的编码网站使用/设置此插件。我知道它应该有效,因为该网站的其他用户已经为此目的使用了该插件。
有关我想要的更详细的示例,这里是带有main的类:
Player
这个类Cell在另一个java文件中:
// 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+"]";
}
}
我正确安装了IntelliJ,并下载了CHelper插件。 我安装了链接到TopCoder的工具栏菜单按钮(这个插件明确制作的网站),但启动TopCoder按钮抛出RuntimeException:无法运行程序... / javaws没有这样的文件。 通过从TopCoder下载的一些任务,我成功地将两个文件合并为一个:TaskA.java到Main.java中(下载了模板)
如果 Eclipse 插件可以像我想要的那样工作,我会很高兴知道它。事实上,这就是我在搜索开始时所寻找的东西,我只为IntelliJ IDE找到了一些插件。
答案 0 :(得分:8)
所以我终于找到了一种方法来做我想做的事:那个做过它的人和我分享了我需要的link to the help。
我将在这里专门为CodinGame总结一下。
要添加到菜单工具栏的重要按钮是
然后我们必须edit project settings
:
接下来,我们必须创建一个新任务(绿色" +"按钮)并使用advanced
选项进行设置。我们使用按钮Edit tests
添加测试输入和已知输出。我们说我们希望生成的文件被称为Solution.java
,而我们要编写的类将被称为CGXFormatter.java
我们现在有两个文件出现在我们的包.../puzzle
中:
CGXFormatter.java
使用方法solve
,我们将在此处阅读输入并在输出中给出答案CGXFormatter.task
,其中包含测试用例的信息等,以便插件生成源文件例如,我们打算打印#34;这是结果"在我们的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
而你&#39 ;重做。
如果你愿意,你也可以把它放在一个脚本中,用multirun自动完成(也可以在IDEA中安装插件)。
那就是你,你已经完成了。
作为附注,我评论out.println
并没有像我预期的那样工作(我不知道为什么),所以我将其替换为{ {1}}而不是在System.out.println
方法中使用建议的out
对象。