日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java笔试题库之编程题库 总共30道编程题,掌握了就可以应付中级以内Java面试题

發(fā)布時(shí)間:2024/1/23 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java笔试题库之编程题库 总共30道编程题,掌握了就可以应付中级以内Java面试题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.編程實(shí)現(xiàn):二分搜索算法

解答:

public class SearchTest {

/** 被搜索數(shù)據(jù)的大小 */

private static final int size = 5000000;

public static void main(String[] args) {

long[] data = new long[size];

// 添加測試數(shù)據(jù)

for (int k = 0; k < data.length; k++) {

data[k] = k;

}

// 要查找的數(shù)據(jù)

long target = 4970002;

binaryFindTest(data, target);

}

/**

* 二分搜索算法實(shí)現(xiàn)

*

* @param data

* 數(shù)據(jù)集合

* @param target

* 搜索的數(shù)據(jù)

* @return 返回找到的數(shù)據(jù)的位置,返回-1表示沒有找到。

*/

public static int binaryFind(long[] data, long target) {

int start = 0;

int end = data.length – 1;

while (start <= end) {

int middleIndex = (start + end) / 2;

if (target == data[middleIndex]) {

return middleIndex;

}

if (target >= data[middleIndex]) {

start = middleIndex + 1;

} else {

end = middleIndex – 1;

}

}

return -1;

}

/**

* 二分搜索測試

*

* @param data

* 數(shù)據(jù)集合

* @param target

* 搜索的數(shù)據(jù)

*/

public static void binaryFindTest(long[] data, long target) {

long start = System.nanoTime();

int result = binaryFind(data, target);

long end = System.nanoTime();

System.out.println(“binary search position:” + result);

System.out.println(“binary search time:” + (end – start));

}

}

2.編程實(shí)現(xiàn):線程A向隊(duì)列Q中不停寫入數(shù)據(jù),線程B從隊(duì)列Q中不停讀取數(shù)據(jù)(只要Q中有數(shù)據(jù))。

解答:

接口中有兩個(gè)一個(gè)是向隊(duì)列中寫push方法 一個(gè)是從隊(duì)列中讀。

public interface StackInterface

{

public void push(int n);

public int[] pop();

}

上邊接口的實(shí)現(xiàn)類。

public class SafeStack implements StackInterface {

private int top = 0;

private int[] values = new int[10];

private boolean dataAvailable = false;

public void push(int n) {

synchronized (this) {

while (dataAvailable) // 1

{

try {

wait();

} catch (InterruptedException e) {

// 忽略 //2

}

}

values[top] = n;

System.out.println(“壓入數(shù)字” + n + “步驟1完成”);

top++;

dataAvailable = true;

notifyAll();

System.out.println(“壓入數(shù)字完成”);

}

}

public int[] pop() {

synchronized (this) {

while (!dataAvailable) // 3

{

try {

wait();

} catch (InterruptedException e) {

// 忽略 //4

}

}

System.out.print(“彈出”);

top–;

int[] test = { values[top], top };

dataAvailable = false;

// 喚醒正在等待壓入數(shù)據(jù)的線程

notifyAll();

return test;

}

}

}

讀線程

public class PopThread implements Runnable

{

private StackInterface s;

public PopThread(StackInterface s)

{

this.s = s;

}

public void run()

{

while(true)

{

System.out.println(“->”+ s.pop()[0] + “<-”);

try {

Thread.sleep(100);

}

catch(InterruptedException e){}

}

}

}

寫線程

public class PushThread implements Runnable

{

private StackInterface s;

public PushThread(StackInterface s)

{

this.s = s;

}

public void run()

{

int i = 0;

while(true)

{

java.util.Random r = new java.util.Random();

i = r.nextInt(10);

s.push(i);

try {

Thread.sleep(100);

}

catch(InterruptedException e){}

}

}

}

3.編程實(shí)現(xiàn):使用Socket經(jīng)行網(wǎng)絡(luò)通信時(shí),客戶端和服務(wù)器端流程。

解答:

服務(wù)器,使用ServerSocket監(jiān)聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請求,客戶連接后,會話產(chǎn)生;在完成會話后,關(guān)閉連接。

客戶端,使用Socket對網(wǎng)絡(luò)上某一個(gè)服務(wù)器的某一個(gè)端口發(fā)出連接請求,一旦連接成功,打開會話;會話完成后,關(guān)閉Socket。客戶端不需要指定打開的端口,通常臨時(shí)的、動(dòng)態(tài)的分配一個(gè)1024以上的端口。

4.編寫代碼實(shí)現(xiàn)同一平面內(nèi)兩圓是否碰撞,其中:

第一個(gè)圓圓心坐標(biāo)為(x1,y1),半徑是r1,第二個(gè)圓圓心坐標(biāo)為(x2,y2),半徑是r2。

方法聲明如下:

boolean collisWith(int x1,int y1,int r1,int x2,int y2,int r2){}

解答:

boolean collisWith(int x1, int y1, int r1, int x2, int y2, int r2) {

boolean flag=false;

int num1=(x1-x2)*(x1-x2);

int num2=(y1-y2)*(y1-y2);

int num3=num1+num2;

double distance=Math.sqrt(num3);

if(distance<=(r1+r2)){

flag=true;

}

return flag;

}

5.判斷一個(gè)int數(shù)組中的元素是否存在重復(fù),方法聲明如下:

boolean isRepeat(int[] m){ }

解答:

public boolean isRepeat2(int[] m){ Set h =new HashSet(m.length); for (int i = 0; i < m.length; i++) { h.add(new Integer(m[i])); } if (h.size()==m.length ){ return false; }else { return true; } }

6.用遞歸方法實(shí)現(xiàn)正序顯示數(shù)組元素。例如String[] s = {“a”,”b”,”c”,”d”};

方法聲明如下:

void print(String[] s,int i){ }

解答:參數(shù) i 是指打印string數(shù)組的起始位置,原理是正序打印s從第0個(gè)開始的所有字符串,等價(jià)于先打印第0個(gè),在打印s中從第一個(gè)開始的所有字符串,如此遞歸

void print(String[] s, int i) {

if ((i >= 0) && (i < s.length)) {

System.out.print(s[i]);

i++;

print(s, i);

}

}

7.請寫出求n!的算法。

解答:

public class Factorial {

public static void main(String[] args) {

long n = 6;

System.out.println(doFactorial(n));

}

public static long doFactorial(long n) {

if (n < 1) {

System.out.println(“ERROR”);

return 0;

} else if (n == 1 || n == 2) {

return n;

} else {

return n * doFactorial(n – 1);

}

}

}

8.在當(dāng)前的JSP網(wǎng)頁里,提交用戶名和密碼,提交給post . jsp, post . jsp打印出用戶名和密碼并返回給瀏覽器。請寫出post . jsp

解答:

假設(shè)頁面用戶名和密碼在login.jsp里,login.jsp頁面代碼如下:

<form action=”post.jsp” method=”post”>

<input type=”text” name=”userName”>

<input type=”password” name=”pwd”>

<input type=”submit”>

</form>

post.jsp頁面代碼:

<%

String userName=request.getParameter(“userName”);

String pwd=request.getParameter(“pwd”);

out.println(“用戶名:”+userName+”,密碼:”+pwd);

%>

9.編寫一個(gè)字符界面的Java Application 程序,接受用戶輸入的10個(gè)整數(shù),并輸出這10個(gè)整數(shù)的最大值和最小值。

解答:采用了冒泡進(jìn)行排序

import java.util.Scanner;

import java.util.Scanner;

public class MaxAndMin {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

int[] arr = new int[10];

for (int i = 0; i < arr.length; i++) {

int next = scanner.nextInt();

arr[i] = next;

}

int[] after=Arrays.sort(arr);

System.out.println(“最小值:”+after[0]+”,最大值:”+after[arr.length-1]);

}

}

10.寫一個(gè)排序算法 1-100隨機(jī)數(shù)字 進(jìn)行排序 要求效率。

解答:

public class Sort {

// 選擇排序方法

public static void selectionSort(int[] number) {

for (int i = 0; i < number.length – 1; i++) {

int m = i;

for (int j = i + 1; j < number.length; j++) {

if (number[j] < number[m])

m = j;

}

if (i != m)

swap(number, i, m);

}

}

// 用于交換數(shù)組中的索引為i、j的元素

private static void swap(int[] number, int i, int j) {

int t;

t = number[i];

number[i] = number[j];

number[j] = t;

}

public static void main(String[] args) {

// 定義一個(gè)數(shù)組

int[] num = new int[100];

for(int i=0;i<num.length;i++){

num[i]=(int)(Math.random()*100)+1;

}

// 排序

selectionSort(num);

for (int i = 0; i < num.length; i++) {

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

}

}

}

11.冒泡排序:依次比較相鄰的兩個(gè)數(shù),將大數(shù)放在前面,小數(shù)放在后面。第一趟結(jié)束,在最后的數(shù)必是所有數(shù)中的最小數(shù)。重復(fù)以上過程,直至最終完成排序。由于在排序過程中總是大數(shù)往前放,小數(shù)往后放,相當(dāng)于氣泡往上升,所以稱作冒泡排序。請用JAVA語言編寫一個(gè)完成冒泡排序算法的程序。

解答:

int[] bubbleSort(int before[]) {

int t;

for (int i = 0; i < before.length; i++) {

for (int j = 0; j < before.length – i – 1; j++) {

if (before[j] > before[j + 1]) {

t = before[j];

before[j] = before[j + 1];

before[j + 1] = t;

}

}

}

return before;

}

12.寫出一段socket通訊(客戶端)的代碼,功能描述如下:

a)客戶端發(fā)起socket通訊,報(bào)文結(jié)構(gòu)為報(bào)文號(3位)+用戶名(5位)+密碼(8位)+ 結(jié)束符(固定為END)。此處報(bào)文號為100

b)服務(wù)端收到后返回應(yīng)答報(bào)文,報(bào)文結(jié)構(gòu)為報(bào)文號(3位)+驗(yàn)證結(jié)果(2位)+結(jié)束符(固定為END)。此處報(bào)文號為101

c)Socket服務(wù)器ip為192.168.0.2,端口號為9999

解答:

客戶端代碼:

Socket sk = new Socket(“192.168.0.2″,9999);

OutputStream os = sk.getOutputStream();

PrintWriter pw = new PrintWriter(os,true);

pw.write(“100stone888888END”);

pw.close();

sk.close();

服務(wù)器端代碼:

ServerSocket vk = new ServerSocket(9999);

Socket sk = vk.accept();

OutputStream os = sk.getOutputStream();

PrintWriter pw = new PrintWriter(os,true);

pw.write(“101oldEND”);

pw.close();

sk.close();

13.編寫函數(shù)insert(String str),將字符串”a,123;b,456;c,789”置入HashMap中。

解答:

import java.util.HashMap;

public class HashMapDemo {

HashMap<String,String> map=new HashMap<String,String>();

public void insert(String str){

map.put(“a”, str);

}

public static void main(String[] args) {

HashMapDemo demo=new HashMapDemo();

demo.insert(“a,123;b,456;c,789″);

}

}

14.有一數(shù)組 a[1000]存放了1000 個(gè)數(shù),這 1000個(gè)數(shù)取自1-999, 且只有兩個(gè)相同的數(shù),剩下的 998個(gè)數(shù)不同, 寫一個(gè)搜索算法找出相同的那個(gè)數(shù)的值(請用 C# or JAVA編程實(shí)現(xiàn),注意空間效率和時(shí)間效率盡可能優(yōu)化)。

解答:

import java.util.Arrays;

public class SearchDemo {

/** 被搜索數(shù)據(jù)的大小 */

private static final int size = 1000;

public static void main(String[] args) {

int[] data = new int[size];

// 添加測試數(shù)據(jù)

for (int k = 0; k < data.length; k++) {

data[k] = k + 1;

}

data[999] = 567;

result(data);

}

/**

* 調(diào)用分搜索算法的方法實(shí)現(xiàn)查找相同元素

* @param data

*/

public static void result(int data[]){

Arrays.sort(data);

for (int i = 0; i < data.length; i++) {

int target = data[i];

data[i] = 0;

int result = binaryFind(data, target);

if (result != -1) {

System.out.println(“相同元素為:”+data[result]);

break;

}

}

}

/**

* 二分搜索算法實(shí)現(xiàn)

*

* @param data

* 數(shù)據(jù)集合

* @param target

* 搜索的數(shù)據(jù)

* @return 返回找到的數(shù)據(jù)的位置,返回-1表示沒有找到。

*/

public static int binaryFind(int[] data, int target) {

int start = 0;

int end = data.length – 1;

while (start <= end) {

int middleIndex = (start + end) / 2;

if (target == data[middleIndex]) {

return middleIndex;

}

if (target >= data[middleIndex]) {

start = middleIndex + 1;

} else {

end = middleIndex – 1;

}

}

return -1;

}

}

15.下面是一個(gè)由*號組成的4行倒三角形圖案。要求:1、輸入倒三角形的行數(shù),行數(shù)的取值3-21之間,對于非法的行數(shù),要求拋出提示“非法行數(shù)!”;2、在屏幕上打印這個(gè)指定了行數(shù)的倒三角形。

*******

*****

***

*

解答:

import java.util.Scanner;

public class Lines {

public static void main(String args[]) {

Scanner scanner = new Scanner(System.in);

int lines = scanner.nextInt();

if (lines > 3 && lines < 21) {

for (int i = lines-1; i >= 0; i–) {

for (int z = 0; z <= i * 2; z++) {

System.out.print(“*”);

}

System.out.print(“\n”);

}

}else{

System.out.println(“非法行數(shù)!”);

}

}

}

16.現(xiàn)有一個(gè)32位的整型變量 value和一個(gè)有32個(gè)元素的數(shù)組a[32],要求:1、對value隨機(jī)賦值;2、讓數(shù)組a[n]的值等于value“位n”的值,0<=n<=31。舉例:如果value的“位0”(Bit0)=0,那么a[0]=0;如果value的“位10”(Bit10)=1,那么a[10]=1。

解答:

public class Foo {

public static void main(String[] args) {

//產(chǎn)生隨機(jī)數(shù)

int random = (int) (Math.random() * Integer.MAX_VALUE + 1);

//轉(zhuǎn)成二進(jìn)制字符串

String str=Integer.toBinaryString(random);

//轉(zhuǎn)成二進(jìn)制時(shí)最前面的零被省略,補(bǔ)上省略的0

if(str.length()<32){

for(int j=0;j<=32-str.length();j++){

str=”0″+str;

}

}

//給數(shù)組賦值

int[] a=new int[32];

for(int i=0;i<str.length();i++){

a[i]=Integer.parseInt(String.valueOf(str.charAt(i)));

System.out.println(“a["+i+"]=”+a[i]);

}

}

}

17.現(xiàn)有1~100共一百個(gè)自然數(shù),已隨機(jī)放入一個(gè)有98個(gè)元素的數(shù)組a[98]。要求寫出一個(gè)盡量簡單的方案,找出沒有被放入數(shù)組的那2個(gè)數(shù),并在屏幕上打印這2個(gè)數(shù)。注意:程序不用實(shí)現(xiàn)自然數(shù)隨機(jī)放入數(shù)組的過程。

答:

int[] b = new int[]{….存入98個(gè)隨機(jī)的1~100的整數(shù)}; int[] a = new int[100]; for(int t : b) a[t-1]=t; for(int t=0; t < a.length; t++) if(a[t]==0) System.out.println(t+1);

18. 實(shí)現(xiàn)函數(shù)public String[ ] array(List list),其中參數(shù)list中元素類型為字符串

解答:

public String[] array(List list) {

String[] elementData = new String[list.size()];

for(int i=0;i<list.size();i++){

elementData[i]=(String)list.get(i);

}

return elementData ;

}

19.創(chuàng)建類Person,其中存儲的成員數(shù)據(jù)為:age(int),sex(boolean),weight(int),至少有一個(gè)構(gòu)造函數(shù)可以初始化這三個(gè)屬性值,同時(shí)提供獲取這三個(gè)屬性值的public方法

解答:

public class Person {

private int age;

private boolean sex;

private int weight;

public Person() {

}

public Person(int age, boolean sex, int weight) {

this.age = age;

this.sex = sex;

this.weight = weight;

}

public int getAge() {

return age;

}

public boolean isSex() {

return sex;

}

public int getWeight() {

return weight;

}

}

20.設(shè)計(jì)線程類WorkerThread,其構(gòu)造函數(shù)接受一個(gè)message字符串作為參數(shù),把該字符串打印到console上,同時(shí),在WorkThread的main函數(shù)中啟動(dòng)該線程。

解答:

public class WorkerThread extends Thread {

public WorkerThread(String message) {

System.out.println(message);

}

public static void main(String[] args) {

new WorkerThread(“hello world!”).start();

}

}

21.寫一個(gè)函數(shù)去掉一個(gè)字符串中單詞間多余的空格,使得相鄰兩個(gè)單詞間有且只有一個(gè)空格。例如當(dāng)輸入字符串是“Hello!_ _Game_programming_ _world!”時(shí),調(diào)用該函數(shù)后字符串變?yōu)椤癏ello!_Game_programming_world!”。

解答:

/**

* 去除字符串中多余的空格

*

* @param s

* 需要處理的字符串

* @return 處理后的字符串

*/

public String trimSpace(String before) {

String temp= “” + before.charAt(0);

for (int i = 1; i < before.length(); i++) {

char c = before.charAt(i);

// 如果當(dāng)前字符是空格

if (c == ‘ ‘) {

// 判斷前一個(gè)不是是空格則添加,否則不添加

if (before.charAt(i – 1) != ‘ ‘) {

temp += c;

}

} else {

temp += c;

}

}

return temp;

}

22. 編寫一個(gè)程序,用來計(jì)算1到100間所有整數(shù)的和是多少?

解答:

public static void GetSum()

{

int sum = 0;

for(int i=1;i<=100;i++)

{

sum+=i;

}

System.out.println(“和為:”+sum);

}

23.請簡單寫出用JAVA連接Oracle數(shù)據(jù)庫,并執(zhí)行一條/SQL語句。(只需要寫關(guān)鍵幾條語句即可,/SQL語句:SELECT*FROM t_users WHERE users_id=‘1111’)

解答:

Class.forName(“oracle.jdbc.OracleDriver”);

String url = “jdbc:oracle:thin:@127.0.0.1:1521:orcl”;

String user = “scott”;

String password = “tiger”;

Connection con = DriverManager.getConnection(url, user, password);

Statement stm = con.createStatement();

ResultSet rs = stm

.executeQuery(“SELECT*FROM t_users WHERE users_id=’1111′”);

while (rs.next()) {

// 取值

}

rs.close();

stm.close();

con.close();

24.在web應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如從GBK到iso8859-1等,如何輸出一個(gè)某種編碼的字符串?

public static String translate(String str) {

String tempStr = “”;

try {

tempStr = new String(str.getBytes(“ISO-8859-1″), “GBK”);

tempStr = tempStr.trim();

} catch (Exception e) {

System.err.println(e.getMessage());

}

return tempStr;

}

25. 請寫出一個(gè)公用方法,輸入String返回該串是否含有非空字符,并寫出junit的測試用例

答:

public class TestString {

public static boolean hasBlank(String str) {

if (str.endsWith(“”) || str.startsWith(“”)) {

return false;

} else {

String[] strs = str.split(“”);

if (strs.length == 1) {

return false;

}

}

return true;

}

@Test

public void testFun() {

System.out.println(TestString.hasBlank(“test”));

}

}

26. JAVA實(shí)現(xiàn)一種排序

答:用插入法進(jìn)行排序代碼如下

package com.tarena;

import java.util.*;

class InsertSort

{

ArrayList list;

public InsertSort(int num,int mod)

{

list = new ArrayList(num);

Random rand = new Random();

System.out.println(“The ArrayList Sort Before:”);

for (int i=0;i<num ;i++ )

{

list.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));

System.out.println(“l(fā)ist["+i+"]=”+list.get(i));

}

}

public void SortIt()

{

Integer tempInt;

int MaxSize=1;

for(int i=1;i<list.size();i++)

{

tempInt = (Integer)list.remove(i);

if(tempInt.intValue()>=((Integer)list.get(MaxSize-1)).intValue())

{

list.add(MaxSize,tempInt);

MaxSize++;

System.out.println(list.toString());

}

else

{

for (int j=0;j<MaxSize ;j++ )

{

if (((Integer)list.get(j)).intValue()>=tempInt.intValue())

{

list.add(j,tempInt);

MaxSize++;

System.out.println(list.toString());

break;

}

}

}

}

System.out.println(“The ArrayList Sort After:”);

for(int i=0;i<list.size();i++)

{

System.out.println(“l(fā)ist["+i+"]=”+list.get(i));

}

}

public static void main(String[] args)

{

InsertSort sort = new InsertSort(10,100);

sort.SortIt();

}

}

27. 編寫一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個(gè),如”我ABC”4,應(yīng)該截為”我AB”,輸入”我ABC漢DEF”,6,應(yīng)該輸出為”我ABC”而不是”我ABC+漢的半個(gè)”。

答:

package com.tarena;

public class SplitString {

String SplitStr;

int SplitByte;

public SplitString(String str, int bytes) {

SplitStr = str;

SplitByte = bytes;

System.out.println(“The String is:” + SplitStr + “;SplitBytes=”

+ SplitByte);

}

public void SplitIt()

{

int loopCount;

loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/SplitByte+1);

System.out.println(“Will Split into “+loopCount);

for (int i=1;i<=loopCount ;i++ )

{

if (i==loopCount){

System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));

} else {

System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));

}

}

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

SplitString ss = new SplitString(

“test中dd文dsaf中男大3443n中國43中國人0ewldfls=103″, 4);

ss.SplitIt();

}

}

28. 編寫程序?qū)⒂蓴?shù)字及字符組成的字符串中的數(shù)字截取出來并按順序輸出,例如:“ABC137GMNQQ2049PN5FFF”輸出結(jié)果應(yīng)該為01234579

答:

package com.tarena;

import java.util.Arrays;

public class NumberSplitChar {

public static void main(String[] args) {

String str=”ABC137GMNQQ2049PN5FFF”;

char[] beforechars=str.toCharArray();

char[] afterchars=new char[beforechars.length];

int j=0;

for(int i=0;i<beforechars.length;i++){

if(beforechars[i]>=’0′ && beforechars[i]<=’9′){

afterchars[j++]=beforechars[i];

}

}

Arrays.sort(afterchars);

for(int i=(afterchars.length-j);i<afterchars.length;i++){

System.out.print(afterchars[i]);

}

}

}

29. 請用JAVA實(shí)現(xiàn)兩個(gè)類,分別實(shí)現(xiàn)堆棧(Stack)和隊(duì)列(Queue)操作。

答:public class MyStack {

private List list;

public MyStack(){

list = new ArrayList();

}

public boolean isEmpty(){

return list.size() == 0;

}

public void push(Object obj){

list.add(obj);

}

public Object pop(){

if(list.size()>0){

Object obj = list.get(list.size()-1);

list.remove(list.size()-1);

return obj;

}else{

return null;

}

}

public int getNumber(){

return list.size();

}

}

class IntegerQueue {

public int[] integerQueue;// 用來當(dāng)隊(duì)列

public int tail;// 隊(duì)尾

public int size;// 隊(duì)的長度,也可以設(shè)置一個(gè)默認(rèn)值,溢出時(shí)從新申請

public IntegerQueue(int size) {

integerQueue = new int[size];

this.size = size;

tail = 0;

}

public void inQueue(int i) {

if (tail < size) {

this.integerQueue[tail] = i;

tail++;

} else {

System.err.println(“溢出啦!”);

}

}

public int outQueue() {

if (tail >= 0) {

int tmp = this.integerQueue[tail];

tail–;

return tmp;

} else {

System.err.println(“隊(duì)列為空!”);

throw new RuntimeException();

}

}

}

30. 假定屏幕的像素寬度為screenWidth,寫一個(gè)函數(shù)計(jì)算一個(gè)字符串需要分成幾行顯示。

要求:

1)、每行應(yīng)盡可能多地顯示字符,但不能有字符部分或完全顯示在屏幕外。超過部分的字符換下一行顯示。

2)、每個(gè)字符的像素寬度不一樣,每個(gè)字符的像素寬度不一樣。用int GetCharWidth(char c)獲得每個(gè)字符的像素寬度。

/**

* 計(jì)算一個(gè)字符串可以分多少行進(jìn)行顯示

*

* @param s

* 原始字符串

* @param screenWidth

* 屏幕寬度

* @return 行數(shù)

*/

int calcLineNum(String s, int screenWidth) {

int length = 0;

// 行數(shù)

int n = 0;

// 統(tǒng)計(jì)長度

for (int i = 0; i < s.length(); i++) {

// 當(dāng)前字符的寬度

int charLen = GetCharWidth(s.charAt(i));

// 總長度增加

length += charLen;

// 如果達(dá)到屏幕寬度

if (length > screenWidth) {

n++; // 行數(shù)+1

length = charLen; // 重新計(jì)算長度

}

}

// 最后一行處理

if (length > 0) {

n++;

}

return n;

}


總結(jié)

以上是生活随笔為你收集整理的Java笔试题库之编程题库 总共30道编程题,掌握了就可以应付中级以内Java面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。