2014-11-20 44 views
0

我需要的援助,(使用NetBeans 7.4)需要幫助編譯用戶輸入的代碼

我創建一個編程小程序,我想最終用戶來回答一些問題,我會在小程序。

有沒有什麼辦法可以讓用戶輸入「代碼」(回答問題)通過GUI編譯和打印出來。 (用戶輸入回答,提交,彙編,和我的應用程序打印,如果它是正確的還是錯誤的)

示例:用戶需要回答

How do I print out "Hello" in java? 

,他們將不得不把

"System.out.println("Hello");" 

任何幫助將是非常美妙的,

謝謝你在前進,

+1

答案是「是的,這是可能的」,但這是一個令人難以置信的廣泛問題。它最終取決於你如何制定出承認「正確」的答案,這個討論對於諸如堆棧溢出之類的地方來說過於寬泛。 – Makoto 2014-11-20 17:44:03

+0

值得讓用戶輸入答案,並且將它與預製字符串進行比較? – 2014-11-20 17:49:07

回答

0

那麼它是可能的,但你需要定義一套針對每個問題的有效答案,比如你點

System.out.println("Hello"); 

爲有效的答案,但

System.out.print("Hello"); 

System.out.printf("%s", "Hello"); 

只是提一些,從代碼編譯的角度來看也是有效的。

此外,您還需要清楚地定義什麼是正確的或錯誤的答案,例如輸出結果是否有新行,即printlnprint

這些只是一些複雜而廣泛的問題。更不用說人類對於正確答案的理解了。

爲了儘量減少這種複雜性,我建議要問的問題準確和代碼提交編譯和運行比較預期的結果。把你的例子,我會問

如何在Java打印出「你好」,以標準輸出

然後,您將不得不在單獨的進程中運行代碼,只要編譯正確,並閱讀該進程的stdout。之後,您可以選擇修剪結果並與預期結果進行比較。如果匹配,則使用者輸入「代碼」,該代碼產生爲有效輸出。

這樣,您的程序將驗證上述所有打印語句是否正確。

要編譯用戶輸入的代碼,您可以使用Interface to invoke Java™ programming language compilers from programs

要編譯除java之外的其他代碼,您還需要安裝它們的編譯程序,如果您要驗證C代碼,則需要安裝代碼(例如GCC),您也可以從java程序運行它們的編譯程序。

+0

我目前只是寫它的Java語言課程,所以它只是 'System.out.println(「你好」)' 如果我只想從他們的答案編譯的代碼是可能的? 如果我要求他們回答上述問題,他們會回答:'System.out.println(「Hello」)',它會編譯並說出代碼是否正確,如果有什麼意義? – 2014-11-20 23:26:39

+0

我想我會設置它有多個答案,如你在評論中提到的,謝謝你的時間,我會記住這一點,並回復,如果我需要幫助:) – 2014-11-21 00:25:02

+0

@MarkLang是的,有可能從java程序中編譯Java代碼,請查看我發佈的鏈接,還必須確保您以可以編譯它的方式包裝答案,例如答案System。 out.println(「Hello」)需要一個分號來完成一個有效的語句,然後,單獨的有效語句不能被成功編譯,你將需要一個本身需要一個封閉類的封閉方法。如果您在編譯過程中遇到問題,請使用目前爲止的代碼發佈一個新問題,您將獲得幫助。 – A4L 2014-11-21 22:01:39