真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在線測(cè)試代碼java 測(cè)試程序代碼

在線等著。。?!妒褂肑ava理解程序邏輯》階段測(cè)試2-機(jī)試試卷 請(qǐng)用Eclipse編寫(xiě)代碼

//第一題:Test.java

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、長(zhǎng)泰網(wǎng)站維護(hù)、網(wǎng)站推廣。

public class Test {

public static void main(String[] args) {

int array[]=new int[10];//聲明數(shù)組并聲明

array[0]=array[1]=1;//賦初始值

System.out.println(array[0]);

System.out.println(array[1]);

for(int i=2;iarray.length;i++){

array[i]=array[i-2]+array[i-1];//用for語(yǔ)句完成相應(yīng)的運(yùn)算

System.out.println(array[i]);

}

}

}

//第二題 RandomTest.java

import java.util.Random;//隨機(jī)數(shù)包聲明

import java.util.Scanner;//用戶輸入包聲明

public class RandomTest {

public static void main(String[] args) {

Scanner reader=new Scanner(System.in);//聲明并創(chuàng)建用戶輸入對(duì)象

System.out.println("我心里有一個(gè)0~99之間的數(shù),你猜是什么?");

int i=(int)(Math.random()*100);//生成一個(gè)隨機(jī)數(shù)

int input=reader.nextInt();//用戶輸入

while(i!=input){//判斷用戶輸入的數(shù)和隨機(jī)生數(shù)的大小

if(inputi){

System.out.println("小了點(diǎn),再猜!");

}

if(inputi){

System.out.println("大了點(diǎn),再猜");

}

input=reader.nextInt();

}

System.out.println("猜對(duì)了!");

System.out.println("繼續(xù)加油!");

}

}

有了java代碼,如何測(cè)試

你這說(shuō)的太籠統(tǒng)了,應(yīng)該具體些。

有了Java代碼之后

1、可以在代碼中寫(xiě)些測(cè)試的方法,把你想要驗(yàn)證的東西,輸出看一下。

2、可以用Debug的形式,跟蹤代碼執(zhí)行,驗(yàn)證程序的邏輯是否正確。

3、利用JUnit寫(xiě)斷言,測(cè)試結(jié)果

怎么寫(xiě)Java測(cè)試代碼?

可以用main函數(shù)和JUnit來(lái)寫(xiě)測(cè)試代碼。main是最早使用的,但是現(xiàn)在更流行的測(cè)試工具是JUnit。

JUnit是一個(gè)Java語(yǔ)言的單元測(cè)試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個(gè)。 JUnit有它自己的JUnit擴(kuò)展生態(tài)圈。多數(shù)Java的開(kāi)發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測(cè)試的工具。

下面是一些具體的編寫(xiě)測(cè)試代碼的技巧或較好的實(shí)踐方法:

1. 不要用TestCase的構(gòu)造函數(shù)初始化Fixture,而要用setUp()和tearDown()方法。

2. 不要依賴或假定測(cè)試運(yùn)行的順序,因?yàn)镴Unit利用Vector保存測(cè)試方法。所以不同的平臺(tái)會(huì)按不同的順序從Vector中取出測(cè)試方法。

3. 避免編寫(xiě)有副作用的TestCase。例如:如果隨后的測(cè)試依賴于某些特定的交易數(shù)據(jù),就不要提交交易數(shù)據(jù)。簡(jiǎn)單的回滾就可以了。

4. 當(dāng)繼承一個(gè)測(cè)試類時(shí),記得調(diào)用父類的setUp()和tearDown()方法。

5. 將測(cè)試代碼和工作代碼放在一起,一邊同步編譯和更新。(使用Ant中有支持junit的task.)

6. 測(cè)試類和測(cè)試方法應(yīng)該有一致的命名方案。如在工作類名前加上test從而形成測(cè)試類名。

7. 確保測(cè)試與時(shí)間無(wú)關(guān),不要依賴使用過(guò)期的數(shù)據(jù)進(jìn)行測(cè)試。導(dǎo)致在隨后的維護(hù)過(guò)程中很難重現(xiàn)測(cè)試。

8. 如果你編寫(xiě)的軟件面向國(guó)際市場(chǎng),編寫(xiě)測(cè)試時(shí)要考慮國(guó)際化的因素。不要僅用母語(yǔ)的Locale進(jìn)行測(cè)試。

9. 盡可能地利用JUnit提供地assert/fail方法以及異常處理的方法,可以使代碼更為簡(jiǎn)潔。

10.測(cè)試要盡可能地小,執(zhí)行速度快。

11.不要硬性規(guī)定數(shù)據(jù)文件的路徑。

12.利用Junit 的自動(dòng)異常處理書(shū)寫(xiě)簡(jiǎn)潔的測(cè)試代碼

事實(shí)上在Junit 中使用try-catch 來(lái)捕獲異常是沒(méi)有必要的,Junit 會(huì)自動(dòng)捕獲異常。那些沒(méi)有被捕獲的異常就被當(dāng)成錯(cuò)誤處理。

13. 充分利用Junit 的assert/fail 方法

assertSame()用來(lái)測(cè)試兩個(gè)引用是否指向同一個(gè)對(duì)象

assertEquals()用來(lái)測(cè)試兩個(gè)對(duì)象是否相等

14. 確保測(cè)試代碼與時(shí)間無(wú)關(guān)

15. 使用文檔生成器做測(cè)試文檔。

急求大神寫(xiě)個(gè)java程序代碼,在線等

public?class?CLSS_ch2?{

public?static?void?main(String[]?args)?{

int?sum?=?0;

for?(int?i?=?1;?i?=?100;?i++)?{

if?(i?%?10?==?3)

continue;

sum?+=?i;

}

System.out.println(sum);

}

}

做在線測(cè)試不允許退出當(dāng)前頁(yè)面的操作怎么實(shí)現(xiàn)(最好是java語(yǔ)言實(shí)現(xiàn))

目前最好的JSP分頁(yè)技術(shù)

在使用數(shù)據(jù)庫(kù)的過(guò)程中,不可避免的需要使用到分頁(yè)的功能,可是JDBC的規(guī)范對(duì)此卻沒(méi)有很好的解決。對(duì)于這個(gè)需求很多朋友都有自己的解決方案,比如使用Vector等集合類先保存取出的數(shù)據(jù)再分頁(yè)。但這種方法的可用性很差,與JDBC本身的接口完全不同,對(duì)不同類型的字段的支持也不好。這里提供了一種與JDBC兼容性非常好的方案。

JDBC和分頁(yè)

Sun的JDBC規(guī)范的制定,有時(shí)很讓人哭笑不得,在JDBC1.0中,對(duì)于一個(gè)結(jié)果集(ResultSet)你甚至只能執(zhí)行next()操作,而無(wú)法讓其向后滾動(dòng),這就直接導(dǎo)致在只執(zhí)行一次SQL查詢的情況下無(wú)法獲得結(jié)果集的大小。所以,如果你使用的是JDBC1.0的驅(qū)動(dòng),那么是幾乎無(wú)法實(shí)現(xiàn)分頁(yè)的。

好在Sun的JDBC2規(guī)范中很好的彌補(bǔ)了這一個(gè)不足,增加了結(jié)果集的前后滾動(dòng)操作,雖然仍然不能直接支持分頁(yè),但我們已經(jīng)可以在這個(gè)基礎(chǔ)上寫(xiě)出自己的可支持分頁(yè)的ResultSet了。

和具體數(shù)據(jù)庫(kù)相關(guān)的實(shí)現(xiàn)方法

有一些數(shù)據(jù)庫(kù),如Mysql, Oracle等有自己的分頁(yè)方法,比如Mysql可以使用limit子句,Oracle可以使用ROWNUM來(lái)限制結(jié)果集的大小和起始位置。這里以Mysql為例,其典型代碼如下:

// 計(jì)算總的記錄條數(shù)

String SQL = "SELECT Count(*) AS total " + this.QueryPart;

rs = db.executeQuery(SQL);

if (rs.next())

Total = rs.getInt(1);

// 設(shè)置當(dāng)前頁(yè)數(shù)和總頁(yè)數(shù)

TPages = (int)Math.ceil((double)this.Total/this.MaxLine);

CPages = (int)Math.floor((double)Offset/this.MaxLine+1);

// 根據(jù)條件判斷,取出所需記錄

if (Total 0) {

SQL = Query + " LIMIT " + Offset + " , " + MaxLine;

rs = db.executeQuery(SQL);

}

return rs;

}

毫無(wú)疑問(wèn),這段代碼在數(shù)據(jù)庫(kù)是Mysql時(shí)將會(huì)是漂亮的,但是作為一個(gè)通用的類(事實(shí)上我后面要提供的就是一個(gè)通用類庫(kù)中的一部分),需要適應(yīng)不同的數(shù)據(jù)庫(kù),而基于這個(gè)類(庫(kù))的應(yīng)用,也可能使用不同的數(shù)據(jù)庫(kù),所以,我們將不使用這種方法。

另一種繁瑣的實(shí)現(xiàn)方法

我看過(guò)一些人的做法(事實(shí)上包括我在內(nèi),一開(kāi)始也是使用這種方法的),即不使用任何封裝,在需要分頁(yè)的地方,直接操作ResultSet滾到相應(yīng)的位置,再讀取相應(yīng)數(shù)量的記錄。其典型代碼如下:

%

sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,

java.sql.ResultSet.CONCUR_READ_ONLY);

strSQL = "select name,age from test";

//執(zhí)行SQL語(yǔ)句并獲取結(jié)果集

sqlRst = sqlStmt.executeQuery(strSQL);

//獲取記錄總數(shù)

sqlRst.last();

intRowCount = sqlRst.getRow();

//記算總頁(yè)數(shù)

intPageCount = (intRowCount+intPageSize-1) / intPageSize;

//調(diào)整待顯示的頁(yè)碼

if(intPageintPageCount) intPage = intPageCount;

%

table border="1" cellspacing="0" cellpadding="0"

tr

th姓名/th

th年齡/th

/tr

%

if(intPageCount0){

//將記錄指針定位到待顯示頁(yè)的第一條記錄上

sqlRst.absolute((intPage-1) * intPageSize + 1);

//顯示數(shù)據(jù)

i = 0;

while(iintPageSize !sqlRst.isAfterLast()){

%

tr

td%=sqlRst.getString(1)%/td

td%=sqlRst.getString(2)%/td

/tr

%

sqlRst.next();

i++;

}

}

%

/table

很顯然,這種方法沒(méi)有考慮到代碼重用的問(wèn)題,不僅代碼數(shù)量巨大,而且在代碼需要修改的情況下,將會(huì)無(wú)所適從。

使用Vector進(jìn)行分頁(yè)

還見(jiàn)過(guò)另一些實(shí)現(xiàn)分頁(yè)的類,是先將所有記錄都select出來(lái),然后將ResultSet中的數(shù)據(jù)都get出來(lái),存入Vector等集合類中,再根據(jù)所需分頁(yè)的大小,頁(yè)數(shù),定位到相應(yīng)的位置,讀取數(shù)據(jù)?;蛘呦仁褂们懊嫣岬降膬煞N分頁(yè)方法,取得所需的頁(yè)面之后,再存入Vector中。

扔開(kāi)代碼的效率不說(shuō),單是從程序結(jié)構(gòu)和使用的方便性上講,就是很糟糕的。比如,這種做法支持的字段類型有限,int, double, String類型還比較好處理,如果碰到Blob, Text等類型,實(shí)現(xiàn)起來(lái)就很麻煩了。這是一種更不可取的方案。

一個(gè)新的Pageable接口及其實(shí)現(xiàn)

很顯然,看過(guò)上面三種實(shí)現(xiàn)方法后,我們對(duì)新的分頁(yè)機(jī)制有了一個(gè)目標(biāo),即:不與具體數(shù)據(jù)庫(kù)相關(guān);盡可能做到代碼重用;盡可能與原JDBC接口的使用方法保持一致;盡可能高的效率。

首先,我們需要提供一個(gè)與java.sql.ResultSet向下兼容的接口,把它命名為Pageable,接口定義如下:

public interface Pageable extends java.sql.ResultSet{

/**返回總頁(yè)數(shù)

*/

int getPageCount();

/**返回當(dāng)前頁(yè)的記錄條數(shù)

*/

int getPageRowsCount();

/**返回分頁(yè)大小

*/

int getPageSize();

/**轉(zhuǎn)到指定頁(yè)

*/

void gotoPage(int page) ;

/**設(shè)置分頁(yè)大小

*/

void setPageSize(int pageSize);

/**返回總記錄行數(shù)

*/

int getRowsCount();

/**

* 轉(zhuǎn)到當(dāng)前頁(yè)的第一條記錄

* @exception java.sql.SQLException 異常說(shuō)明。

*/

void pageFirst() throws java.sql.SQLException;

/**

* 轉(zhuǎn)到當(dāng)前頁(yè)的最后一條記錄

* @exception java.sql.SQLException 異常說(shuō)明。

*/

void pageLast() throws java.sql.SQLException;

/**返回當(dāng)前頁(yè)號(hào)

*/

int getCurPage();

}

這是一個(gè)對(duì)java.sql.ResultSet進(jìn)行了擴(kuò)展的接口,主要是增加了對(duì)分頁(yè)的支持,如設(shè)置分頁(yè)大小,跳轉(zhuǎn)到某一頁(yè),返回總頁(yè)數(shù)等等。

接著,我們需要實(shí)現(xiàn)這個(gè)接口,由于這個(gè)接口繼承自ResultSet,并且它的大部分功能也都和ResultSet原有功能相同,所以這里使用了一個(gè)簡(jiǎn)單的Decorator模式。

PageableResultSet2的類聲明和成員聲明如下:

public class PageableResultSet2 implements Pageable {

protected java.sql.ResultSet rs=null;

protected int rowsCount;

protected int pageSize;

protected int curPage;

protected String command = "";

}

可以看到,在PageableResultSet2中,包含了一個(gè)ResultSet的實(shí)例(這個(gè)實(shí)例只是實(shí)現(xiàn)了ResultSet接口,事實(shí)上它是由各個(gè)數(shù)據(jù)庫(kù)廠商分別實(shí)現(xiàn)的),并且把所有由ResultSet繼承來(lái)的方法都直接轉(zhuǎn)發(fā)給該實(shí)例來(lái)處理。

PageableResultSet2中繼承自ResultSet的主要方法:

//……

public boolean next() throws SQLException {

return rs.next();

}

//……

public String getString(String columnName) throws SQLException {

try {

return rs.getString(columnName);

}

catch (SQLException e) {//這里是為了增加一些出錯(cuò)信息的內(nèi)容便于調(diào)試

throw new SQLException (e.toString()+" columnName="

+columnName+" SQL="+this.getCommand());

}

}

//……

只有在Pageable接口中新增的方法才需要自己的寫(xiě)方法處理。

/**方法注釋可參考Pageable.java

*/

public int getCurPage() {

return curPage;

}

public int getPageCount() {

if(rowsCount==0) return 0;

if(pageSize==0) return 1;

//calculate PageCount

double tmpD=(double)rowsCount/pageSize;

int tmpI=(int)tmpD;

if(tmpDtmpI) tmpI++;

return tmpI;

}

public int getPageRowsCount() {

if(pageSize==0) return rowsCount;

if(getRowsCount()==0) return 0;

if(curPage!=getPageCount()) return pageSize;

return rowsCount-(getPageCount()-1)*pageSize;

}

public int getPageSize() {

return pageSize;

}

public int getRowsCount() {

return rowsCount;

}

public void gotoPage(int page) {

if (rs == null)

return;

if (page 1)

page = 1;

if (page getPageCount())

page = getPageCount();

int row = (page - 1) * pageSize + 1;

try {

rs.absolute(row);

curPage = page;

}

catch (java.sql.SQLException e) {

}

}

public void pageFirst() throws java.sql.SQLException {

int row=(curPage-1)*pageSize+1;

rs.absolute(row);

}

public void pageLast() throws java.sql.SQLException {

int row=(curPage-1)*pageSize+getPageRowsCount();

rs.absolute(row);

}

public void setPageSize(int pageSize) {

if(pageSize=0){

this.pageSize=pageSize;

curPage=1;

}

}

PageableResultSet2的構(gòu)造方法:

public PageableResultSet2(java.sql.ResultSet rs) throws java.sql.SQLException {

if(rs==null) throw new SQLException("given ResultSet is NULL","user");

rs.last();

rowsCount=rs.getRow();

rs.beforeFirst();

this.rs=rs;

}

這里只是簡(jiǎn)單的取得一個(gè)總記錄數(shù),并將記錄游標(biāo)移回初始位置(before first),同時(shí)將參數(shù)中的ResultSet賦給成員變量。

Pageable的使用方法

因?yàn)镻ageable接口繼承自ResultSet,所以在使用方法上與ResultSet一致,尤其是在不需要分頁(yè)功能的時(shí)候,可以直接當(dāng)成ResultSet使用。而在需要分頁(yè)時(shí),只需要簡(jiǎn)單的setPageSize, gotoPage,即可。

PreparedStatement pstmt=null;

Pageable rs=null;

……//構(gòu)造SQL,并準(zhǔn)備一個(gè)pstmt.

rs=new PageableResultSet2(pstmt.executeQuery());//構(gòu)造一個(gè)Pageable

rs.setPageSize(20);//每頁(yè)20個(gè)記錄

rs.gotoPage(2);//跳轉(zhuǎn)到第2頁(yè)

for(int i=0; irs.getPageRowsCount(); i++){//循環(huán)處理

int id=rs.getInt(“ID”);

……//繼續(xù)處理

}

總結(jié)

一個(gè)好的基礎(chǔ)類應(yīng)該是便于使用,并且具備足夠的可移植性,同時(shí)要保證其功能的完善。在上面的實(shí)現(xiàn)中,我們從java.sql.ResultSet接口繼承出Pageable,并實(shí)現(xiàn)了它。這就保證了在使用中與JDBC原有操作的一致性,同時(shí)對(duì)原有功能沒(méi)有縮減。

同時(shí)它也是易于使用的,因?yàn)榉庋b了一切必要的操作,所以在你的代碼中唯一顯得"難看"和"不舒服"的地方就是需要自己去構(gòu)造一個(gè)PageableResultSet2。不過(guò)只要你愿意,這也是可以解決的。

當(dāng)然它也有具有充分的可移植性,當(dāng)你將數(shù)據(jù)庫(kù)由Oracle變?yōu)镸ysql或者SQLServer的時(shí)候,你仍然可以使用這些分頁(yè)的代碼。它在使用中(或者說(shuō)在移植的過(guò)程中)唯一的限制就是你必須要使用一個(gè)支持JDBC2的驅(qū)動(dòng)(現(xiàn)在明白為什么我把類命名為PageableResultSet2了吧。:P),不過(guò),好在JDBC2已經(jīng)成為標(biāo)準(zhǔn)了,絕大多數(shù)的數(shù)據(jù)庫(kù)(如Oracle, Mysql, SQLServer)都有自己的或者第三方提供的JDBC2的驅(qū)動(dòng)。

OK,這個(gè)分頁(yè)的實(shí)現(xiàn)是否對(duì)你的編程有幫助呢?仔細(xì)看看,其實(shí)真正自己寫(xiě)的代碼并不多的,大部分都只是簡(jiǎn)單的轉(zhuǎn)發(fā)操作。一個(gè)合適的模式應(yīng)用可以幫你很大忙。


分享題目:在線測(cè)試代碼java 測(cè)試程序代碼
轉(zhuǎn)載注明:http://weahome.cn/article/hiogcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部