Java Web階段附加
題目1
自己實(shí)現(xiàn)一個(gè)功能類似于ArrayList的容器MyArrayList妄壶,MyArrayList要實(shí)現(xiàn)MyList接口中描述的所有方法。
public interface MyList<E> {
/**
* 向容器中添加一個(gè)元素
* @param element
*/
public void add(E element);
/**
* 向容器中添加一組元素
* @param arrayOfElements 元素的數(shù)組
*/
public void add(E[] arrayOfElements);
/**
* 刪除指定的元素(首次出現(xiàn)的位置)
* @param e 待刪除的元素
* @return 如果元素存在返回true否則返回false
*/
public boolean remove(E e);
/**
* 刪除指定的元素
* @param e 元素
* @param allOccurence 如果為true則刪除所有位置上的該元素否則只刪除首次出現(xiàn)的位置
* @return 如果元素存在返回true否則返回false
*/
public boolean remove(E e, boolean allOccurence);
/**
* 刪除指定位置的元素
* @param index 元素的位置(索引)
* @return 被刪除的元素
*/
public E removeAtIndex(int index);
/**
* 修改指定位置的元素
* @param index 元素的位置(索引)
* @param element 新元素
* @return 被修改的舊元素
*/
public E set(int index, E element);
/**
* 查找元素在容器中首次出現(xiàn)的位置
* @param element 元素
* @return 找到了返回元素首次出現(xiàn)的位置(索引)否則返回-1
*/
public int indexOf(E element);
/**
* 獲取指定位置的元素
* @param index 元素的位置(索引)
* @return 元素
*/
public E get(int index);
/**
* 用指定的位置獲取當(dāng)前容器的子容器
* @param fromIndex 起始位置(包含)
* @param toIndex 終止位置(不包含)
* @return 子容器
*/
public MyList<E> subList(int fromIndex, int toIndex);
/**
* 是不是空容器
* @return 容器沒有元素返回true否則返回false
*/
public boolean isEmpty();
/**
* 清空容器
*/
public void clear();
/**
* 容器的大小
* @return 容器中元素的個(gè)數(shù)
*/
public int size();
}
自己
public class MyListImpl<E> implements MyList<E> {
private static final int DEFAULT_SIZE = 10;
private int list_index = -1;
private E[] list;
public MyListImpl() {
list = (E[]) new Object[DEFAULT_SIZE];
}
@Override
public void add(E element) {
if (list_index >= list.length - 1) {
E[] listTemp = (E[]) new Object[list.length + DEFAULT_SIZE];
for (int i = 0; i < list.length; i++) {
listTemp[i] = list[i];
}
list = listTemp;
}
list_index += 1;
list[list_index] = element;
}
@Override
public void add(E[] arrayOfElements) {
for (int i = 0; i < arrayOfElements.length; i++) {
add(arrayOfElements[i]);
}
}
@Override
public boolean remove(E e) {
int eIndex = indexOf(e);
if (eIndex != -1) {
for (int i = eIndex; i <= list_index; i++) {
list[i] = list[i + 1];
}
list[list_index] = null;
list_index--;
return true;
}
return false;
}
@Override
public boolean remove(E e, boolean allOccurence) {
if (allOccurence) {
boolean flag = true;
do {
flag = remove(e);
} while (flag);
return true;
}
else {
return remove(e);
}
}
@Override
public E removeAtIndex(int index) {
E e = null;
if (index <= list_index) {
e = list[index];
}
for (int i = index; i <= list_index; i++) {
list[i] = list[i + 1];
}
list[list_index] = null;
list_index--;
return e;
}
@Override
public E set(int index, E element) {
E e = null;
if (index <= list_index) {
e = list[index];
list[index] = element;
}
return e;
}
老師
題目2
編寫一個(gè)保齡球計(jì)分程序礼仗。
保齡球的規(guī)則:
- 一局比賽共有 10 個(gè)計(jì)分格雕沿。選手在每一格里有 2 次機(jī)會(huì)擊倒所有 10 個(gè)球瓶撤防。如果球手在一個(gè)計(jì)分格里椰弊,第一投便擊倒全部 10 個(gè)球瓶,則記為一次“全中”温鸽,無(wú)需進(jìn)行第二投保屯。如果球手在一個(gè)計(jì)分格里手负,兩次投球才將全部 10 個(gè)球瓶擊倒,則記為一次“補(bǔ)中”姑尺。例如竟终,球手可能第一投擊倒 7 個(gè)球瓶,第二投擊倒余下 3 個(gè)切蟋。如果球手第一投沒有擊倒任何球瓶统捶,但第二投擊倒所有 10 支球瓶,鑒于球手兩次投球才擊倒所有球瓶柄粹,仍記為一次“補(bǔ)中”而非“全中”喘鸟。球手兩次投球后仍未能擊倒所有 10 支球瓶,則記為一次“失誤”驻右。
- 失誤的計(jì)分方法什黑。對(duì)于失誤的計(jì)分,只需將兩次投球分別擊倒的瓶數(shù)相加堪夭,即可得出本格最終分?jǐn)?shù)愕把。例如:如果球手第一輪第一投擊倒 3 支球瓶,第二投擊倒 2 支球瓶茵瘾,則第一格計(jì) 5 分礼华。如果球手第二輪共擊倒 7 支球瓶咐鹤,則第二格計(jì) 12(5+7) 分拗秘。
- 補(bǔ)中后的計(jì)分方法。如果球員補(bǔ)中祈惶,那么計(jì)分卡第一格記錄球員第一投擊倒的球瓶數(shù)雕旨,第二格畫一條反斜線。補(bǔ)中分?jǐn)?shù)為“10 分加上球手下一格第一投擊倒的瓶數(shù)”捧请。例如:如果球員在第一格補(bǔ)中凡涩,第二格第一投擊倒 7 支球瓶,則第一格最終分?jǐn)?shù)為 17疹蛉。
- 全中后的計(jì)分方法活箕。若球手打出全中,則在當(dāng)格第一行記一個(gè)“X”可款。全中分?jǐn)?shù)為“10 分加上球手之后兩次投球擊倒瓶數(shù)”育韩。例如,如果球手在第一格打出全中闺鲸,而后在第二格第一球擊倒 5 瓶筋讨,第二球擊倒 4 瓶,則第一格最終分?jǐn)?shù)為 19摸恍。如果球手接連打出兩個(gè)全中悉罕,則之后一投的分?jǐn)?shù)仍然記入第一格內(nèi)。例如,如果球手在前三格均打出全中壁袄,則第一格最終分?jǐn)?shù)為 30类早。
- 第 10 格如果打出“全中”,則追加兩次投球機(jī)會(huì)然想;如果打出“補(bǔ)中”莺奔,則追加一次投球機(jī)會(huì)。
要求:通過鍵盤輸入每一格第一次和第二次擊中的球瓶數(shù)量变泄,如果“全中”令哟,當(dāng)前格只輸入一次。第 10 格根據(jù)第 5 條規(guī)則可能會(huì)追加一次或兩次輸入妨蛹,輸入完成后顯示當(dāng)前局的得分屏富。
題目3
簡(jiǎn)要回答以下問題。
- JSP和Servlet之間是一種怎樣的關(guān)系蛙卤?
- 舉例說(shuō)明JSP中的四種作用域(page狠半、request、session颤难、application)的意義以及如何使用神年。
- 實(shí)現(xiàn)用戶會(huì)話跟蹤有哪些技術(shù)?
- 跳轉(zhuǎn)和重定向有哪些區(qū)別行嗤?
- 如果要選擇一個(gè)Web框架來(lái)開發(fā)Web應(yīng)用已日,你的選擇標(biāo)準(zhǔn)是什么?