扩展思路
扩展思路
- 提供在线测试接口(返回编译结果)
- 沙箱模块引入自定义异常机制(自定义异常拦截过滤响应返回数据,处理沙箱响应信息)
- 沙箱模块引入swagger、knife4j(便于在线调试沙箱接口):onlineRun
项目测试:
1.创建题目-输出两数之和
设定题目基本信息、答案信息等
输出两数之和:
```java
public class Main {
public static void main(String[] args) {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
System.out.println("结果:" + (a + b));
}
}
```
设定测试用例规则
输入用例:1 2
、2 6
输出用例:3、8
每个输入用例和输出用例是对照的
2.创建题目-反转链表
如果编译失败,则可将编译结果进行返回(例如引入在线调试接口等,返回相应的提示信息:编译、调试、输入测试用例等)
import java.util.*;
public class Main {
public class ListNode {
int val;
ListNode next = null;
public ListNode(int val) {
this.val = val;
}
}
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode oddEvenList (ListNode head) {
// write code here
return null;
}
}
编译成功 ExecuteMessage(exitValue=0, message=, errorMessage=null, time=274, memory=null) 运行失败,错误码: 1 ExecuteMessage(exitValue=1, message=, errorMessage=错误: 在类 Main 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application, time=34, memory=null) 删除成功 超时了,中断
参考功能说明:http://www.ikun-oj.top/view/question/1720794298284281858/description
题目描述、题解、提交记录(查看提交记录,显示提交信息)
运行:
public class Main {
public static void main(String[] args) {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
System.out.println("结果:" + (a + b));
}
}
Status:code为0正常响应。
status是判题响应状态 :参考QuestionSubmitStatusEnum
运行错误=》显示错误结果
运行成功=》发送响应内容(提示错误信息等)
以两数之和题目为参考:
{
"code": "",
"judgeInfo": "",
"language": "",
"questionId": 1787049705855799298,
"status": 0
}
响应数据:
{
"code": 0,
"data": {
"outputList": [],
"message": "错误: 找不到或无法加载主类 Main\n原因: java.lang.ClassNotFoundException: Main",
"status": 3,
"judgeInfo": {
"message": null,
"memory": null,
"time": "0"
}
},
"message": "ok"
}
项目扩展
1.代码提交
代码提交后台实现思路:先生成提交记录,随后后台一步调用沙箱接口获取调试信息并生成调试结果
如果前台需要查看答案:可以再次调用接口获取答案记录(例如用户已经提交了题目,则可点击答案选项卡获取答案信息)
如果前台需要在线输入用例灵活调试:则可设定相应的测试用例,调用沙箱接口直接进行测试