国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

簡易實現藍橋評測系統

2019-11-14 10:45:46
字體:
來源:轉載
供稿:網友

因為參加藍橋杯,這參賽費本身就不便宜。我還去買你們的vip么? 但是在練習中有的題目只有vip才能看,才能送到系統評測。 我費了很大的勁研究了一套自己寫的評測系統。Like this: 這里寫圖片描述

首先,下載所有藍橋評測系統的源碼。 鏈接: https://pan.baidu.com/s/1bpnCQoZ 密碼: xext

關于vip題目,相信你們都可以找到的。 http://blog.csdn.net/rodestillfaraway/article/details/50529597 可以去這里,我會在自己博客寫下java實現方法。我的速度比較慢,畢竟新手,邊摸索邊寫。

說一下原理: 1.官方原碼命名都是有規律的xx-input-01.txt這樣的。對應路徑自己改下。 2.我首先為了編程思路方便,替換了System的out流,使用的是套在PRintStream里的ByteArrayOutputStream。會將你程序運行的輸出存在一個字節數組里面。然后從官方原碼的output文件里讀取并存入一個字符數組里,兩者進行比較。 說一下功能: 1.可以比較輸出與原碼是否一致 2.會把錯誤的題目的正確輸出和你的輸出同時顯示在控制臺 3.可以使用printInput(int n)在控制臺顯示原碼的input文件 4.可以給run傳參來只檢測對應的原碼 說一下怎么使用: 1.我寫的是抽象類,使用時直接創建LT類的對象,構造時傳入你當前要檢測的題目名字 2.使用內部類補足fun方法,fun里面寫入自己的代碼。還有一個很重要的一點,我的LT類有一個成員的Scanner對象sc,用來從源碼的input文件讀取內容。所以你的方法里不需要再新建Scanner對象了。直接使用sc調用read方法就好。3.最后要運行LT的run方法。

接下來,放代碼:

import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.PrintStream;import java.util.Scanner;public abstract class LT { Scanner sc; String ti; public LT(String st) { ti = st; } public void run() { for (int i = 1; i <= 30; i++) { test(i); } } public void run(int n) { test(n); } public void printIn(int i) { try { sc = new Scanner(new File("d:/java/算法/測試數據/" + ti + "-input-" + i + ".txt")); } catch (FileNotFoundException e) { // TODO Auto-generated catch block System.out.println("不存在此輸入文件"); } while (sc.hasNextLine()) { System.out.println(sc.nextLine()); } } public abstract void fun(); public void test(int i) { // 設置流 ByteArrayOutputStream bos2 = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(bos2); PrintStream old = System.out; System.setOut(ps); FileInputStream fis; // 讀入 try { sc = new Scanner(new File("d:/java/算法/測試數據/" + ti + "-input-" + i + ".txt")); } catch (FileNotFoundException e) { // TODO Auto-generated catch block // 若沒有輸入文件可以繼續執行 } finally { try { fis = new FileInputStream("d:/java/算法/測試數據/" + ti + "-output-" + i + ".txt"); // 調用函數 fun(); // 讀取,檢測 ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length = -1; while ((length = fis.read(buffer)) != -1) { bos.write(buffer, 0, length); } bos.close(); fis.close(); System.setOut(old); String a = bos.toString().replaceAll("http://s", "").replaceAll(" ", ""); String b = bos2.toString().replaceAll("http://s", "").replaceAll(" ", ""); System.out.print(i + ":" + a.equalsIgnoreCase(b)); if (!a.equalsIgnoreCase(b)) { System.out.println("您的輸出:" + bos2.toString()); System.out.println("標準輸出:" + bos.toString()); } } catch (FileNotFoundException e2) { System.exit(0); }catch(IOException e3){ System.exit(0); } } }}

使用用例

public class Main11 { public static void main(String[] args) { LT lt=new LT("字符串對比") { @Override public void fun() { String s1=sc.nextLine(); String s2=sc.nextLine(); if(s1.length()!=s2.length()){ System.out.println(1); }else{ if(s1.equals(s2)){ System.out.println(2); }else if(s1.equalsIgnoreCase(s2)){ System.out.println(3); }else{ System.out.println(4); } } } }; lt.run(); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉川市| 彭水| 县级市| 葵青区| 无棣县| 乌兰县| 峡江县| 吉林省| 剑川县| 涟水县| 罗平县| 锡林郭勒盟| 博乐市| 建平县| 兴安盟| 南郑县| 耿马| 赞皇县| 博客| 沽源县| 柳州市| 枞阳县| 武宣县| 容城县| 张家界市| 绥棱县| 锦屏县| 泽州县| 上饶市| 怀集县| 铜陵市| 峡江县| 房产| 崇州市| 合山市| 加查县| 肇州县| 河源市| 饶平县| 高青县| 宁远县|