2016-07-20 7 views
8

के लिए इंटेलिजे में चेल्पर प्लगइन का उपयोग करके मैंने हाल ही में कोडिंग प्रतियोगिताओं के साथ कोडिंग साइट की खोज की: CodinGame, और समस्याओं को हल करने के लिए, हमें उन्हें केवल एक फ़ाइल के साथ मुख्य (निम्नलिखित में) उदाहरण, कक्षा Player), और यदि अन्य कक्षाओं की आवश्यकता है, तो हम उन्हें इस फ़ाइल में शामिल करते हैं।कोडिंग प्रतियोगिता

इस उद्देश्य (और another coding site के लिए काम करते हुए देखा गया) के लिए, मैं आदेश एक जावा फ़ाइल में सभी स्रोत फ़ाइलें डाल करने में 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()); 
    } 
} 

और इस वर्ग के सेल एक और जावा फ़ाइल में है:

// 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+"]"; 
    } 
} 

और मैं प्लगइन को दो (या अधिक) जावा फाइलों को मर्ज करने के लिए चाहता हूं ताकि यह प्राप्त हो सके:

// 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 प्लगइन डाउनलोड किया। मैंने टॉपकोडर से जुड़ी टूलबार मेनू बटन स्थापित किया है (साइट जो इस प्लगइन को स्पष्ट रूप से बनाई गई है), लेकिन लॉन्च टॉपकोडर बटन एक रनटाइम अपवाद फेंकता है: प्रोग्राम नहीं चला सकता .../javaws ऐसी कोई फ़ाइल नहीं है। TaskA.java Main.java में (डाउनलोड किए गए टेम्प्लेट के साथ)

क्या आदर्श एक ग्रहण प्लगइन की तरह काम कर सकता था

तो होगा: टोपकोडर से डाउनलोड कुछ कार्यों के साथ, मैं 2 फ़ाइलें विलय में में एक सफल रहा मैं क्या चाहता हूं, मुझे इसके बारे में जानकर बहुत खुशी होगी। वास्तव में, यही वह था जो मैं अपनी खोज की शुरुआत में देख रहा था, और मुझे केवल इंटेलिजे आईडीई के लिए कुछ प्लगइन मिला।

+0

आप पहले से ही एक परियोजना है कि आप के लिए इस प्लगइन का उपयोग कर रहे नहीं बनाया है, यह केवल 'static' साथ' class' कीवर्ड उपसर्ग के लिए, का यह वर्ग संलग्न है स्वतंत्र रूप में इस वर्ग अंकन बहुत आसान है। यह सुनिश्चित करता है कि संलग्न वर्ग के उदाहरण इसमें शामिल वर्गों के उदाहरणों से स्वतंत्र हैं। उदाहरण के लिए, आपके कोड में 'सेल' वर्ग 'स्थिर' के साथ उपसर्ग किया जाएगा। –

+0

खैर, यह प्लगइन वास्तव में "ठीक से" कोडिंग के लिए है। मैं अलग-अलग फ़ाइलों में कक्षाओं को अलग करने में सक्षम होना चाहता हूं (प्रत्येक वर्ग एक अलग फ़ाइल), और उन्हें एक फ़ाइल में इस टूल के साथ विलय करें। मुझे पता है कि मुझे विलय कोड में कक्षा 'सेल' के लिए' स्थिर 'रखना चाहिए, और वास्तव में मेरे पास यह मेरे वास्तविक प्लेयर वर्ग (मैन्युअल रूप से किया गया) में है। मेरे पास 'प्लेयर' कक्षा के अंदर पदानुक्रम के साथ 7 आंतरिक वर्गों की तरह कुछ है, और इसलिए मैं उन्हें अलग करना चाहता हूं (कम गंदे कोड), साथ ही मैं उन्हें आसानी से परीक्षण करने में सक्षम होना चाहता हूं। – OroshiX

उत्तर

6

तो आखिर में मुझे जो कुछ चाहिए था उसे करने का एक तरीका मिला: जिस व्यक्ति ने इसे किया था, उसे मुझे link to the help साझा करना पड़ा।

मैं इसे विशेष रूप से CodinGame के लिए समेटने जा रहा हूं।

I- टूलबार बटनों

महत्वपूर्ण बटन मेनू उपकरण पट्टी में जोड़ने के लिए कर रहे हैं

  • नया कार्य
  • संशोधित कार्य
  • कार्य को हटाने
  • परियोजना सेटिंग संपादित करें बनाने

अब, हम हैं ई लाल आयत में कुछ बटन: toolbar IDEA

द्वितीय सेटिंग संपादित करें

फिर हम edit project settings करने के लिए है:

  • अपने डिफ़ॉल्ट पैकेज के लिए डिफ़ॉल्ट निर्देशिका सेट
  • उत्पादन निर्देशिका के लिए है जेनरेट की गई स्रोत फ़ाइल

Editing project settings

III- कार्य

अगला बात बनाएँ, हम एक नया कार्य (हरी "+" बटन) बना सकते हैं और advanced विकल्प का उपयोग कर इसे सेट अप करने के लिए है। हम परीक्षण Edit tests बटन के साथ परीक्षण इनपुट और ज्ञात आउटपुट जोड़ते हैं। हम कहते हैं कि हम चाहते हैं उत्पन्न फ़ाइल Solution.java के नाम से जाना है, और वर्ग जहां हम लिखने के लिए जा रहे हैं CGXFormatter.java

Creating a new task

के नाम से जाना जा रहा है

अब हम दो फ़ाइलों जो हमारे पैकेज .../puzzle में दिखाई दिया है:

  • एक विधि solve है, जो है जहाँ हम इनपुट पढ़ सकते हैं और उत्पादन
  • CGXFormatter.task, जो जानकारी ओ शामिल में हमारे जवाब देने के लिए जा रहे हैं के साथ 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"); 
    } 
} 

वी समाधान

अंतिम चरण उत्पन्न करें: रन पर क्लिक करें। फिर हमारे पास निर्देशिका 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 और आप कर चुके हैं। यदि आप चाहते हैं, तो आप इसे एक मल्टीरुन (आईडीईए में स्थापित करने के लिए प्लगइन) के साथ स्वचालित रूप से करने के लिए एक स्क्रिप्ट में भी डाल सकते हैं।

यह है कि, बस हो गया।


एक तरफ ध्यान दें रूप में, मैं टिप्पणी की है कि out.println के रूप में मैं इरादा काम नहीं किया (क्यों मैं नहीं जानता), तो मैं System.out.println द्वारा बदल दिया बजाय में प्रस्तावित out वस्तु का उपयोग करने का solve विधि।

संबंधित मुद्दे