码迷,mamicode.com
首页 > 编程语言 > 详细

java编程题

时间:2016-08-14 22:08:06      阅读:452      评论:0      收藏:0      [点我收藏+]

标签:

第一题输入字符串长度len1,字符串s1,字符串长度len2,字符串s2。从后向前比较,以最短字符串为标准,输出不同的元素的个数。

    例如:    输入:s1="1,3,5"   len1=3        s2="2,4,1,7,5"   len2=5  

              输出:1

    函数原型

public int getDiffNum(int len1, String s1, int len2, String s2) 

[java] :

  1. public class HuaWeiTest {  
  2. public static void main(String[] args) {  
  3. String s1 = "1,3,5";  
  4. String s2 = "2,4,1,7,5";  
  5. int len1 = 3;  
  6. int len2 = 5;  
  7. HuaWeiTest hwt = new HuaWeiTest();  
  8. System.out.println(hwt.getDiffNum(len1, s1, len2, s2));  
  9. }  
  10. public int getDiffNum(int len1, String s1, int len2, String s2)  {  
  11. int count = 0;  
  12. int len = 0;  
  13. String[] arr1 = s1.split(",");  
  14. String[] arr2 = s2.split(",");  
  15. if(len1 > len2) len = len2;  
  16. else len = len1;  
  17. for(int i=0;i<len;i++) {  
  18. if(!arr1[len1-i-1].equals(arr2[len2-i-1])) {  
  19. count ++;  
  20. }  
  21. }  
  22. return count;  
  23. }  
  24. }  

 

public class HuaWeiTest {

 

public static void main(String[] args) {

String s1 = "1,3,5";

String s2 = "2,4,1,7,5";

int len1 = 3;

int len2 = 5;

HuaWeiTest hwt = new HuaWeiTest();

System.out.println(hwt.getDiffNum(len1, s1, len2, s2));

}

 

public int getDiffNum(int len1, String s1, int len2, String s2)  {

int count = 0;

int len = 0;

String[] arr1 = s1.split(",");

String[] arr2 = s2.split(",");

if(len1 > len2) len = len2;

else len = len1;

for(int i=0;i<len;i++) {

if(!arr1[len1-i-1].equals(arr2[len2-i-1])) {

count ++;

}

}

return count;

}

}

 

 第二题输入字符串长度,字符串,计数m。从前往后计数,当数到m个元素时,m个元素出列,同时将该元素赋值给m,然后从下一个数计数循环,直到所有数字都出列,给定的数全部为大于0的数字。输出出队队列。

    例如:  输入:len=4    str="3,1,2,4"   m=7   

             输出:2,3,1,4  

    函数原型

public String getOutString(int len, String str, int m) 

[java] :

  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3. public class HuaWeiTest {  
  4. public static void main(String[] args) {  
  5. int len=4;  
  6. String str="3,1,2,4";     
  7. int m=7;    
  8. HuaWeiTest hwt = new HuaWeiTest();  
  9. System.out.println(hwt.getOutString(len, str, m));  
  10. }  
  11. public String getOutString(int len, String str, int m) {  
  12. String ret ="";  
  13. String[] arr = str.split(",");  
  14. List<String> ls = new ArrayList<String>();  
  15. for(int i=0;i<len;i++) {  
  16. ls.add(arr[i]);  
  17. }  
  18. for(int i=0;i<len;i++) {  
  19. int temp = (m-1)%ls.size();  
  20. ret += ls.get(temp);  
  21. m = Integer.parseInt(ls.get(temp))+temp;  
  22. ls.remove(temp);  
  23. }  
  24. return ret;  
  25. }  
  26. }  

 

import java.util.ArrayList;

import java.util.List;

 

 

public class HuaWeiTest {

 

public static void main(String[] args) {

int len=4;

String str="3,1,2,4";   

int m=7;  

HuaWeiTest hwt = new HuaWeiTest();

System.out.println(hwt.getOutString(len, str, m));

}

public String getOutString(int len, String str, int m) {

String ret ="";

String[] arr = str.split(",");

List<String> ls = new ArrayList<String>();

for(int i=0;i<len;i++) {

ls.add(arr[i]);

}

for(int i=0;i<len;i++) {

int temp = (m-1)%ls.size();

ret += ls.get(temp);

m = Integer.parseInt(ls.get(temp))+temp;

ls.remove(temp);

}

return ret;

}

}

 

一.选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家 评委,judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分  * 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。

   函数接口   int cal_score(int score[], int judge_type[], int n) 

  [java] :

  1. public class SWTest {  
  2. public static void main(String[] args) {  
  3. int score[] = {  
  4. 34,53,65,75,64  
  5. };  
  6. int judge_type[] = {  
  7. 1,1,1,2,2  
  8. };  
  9. SWTest st = new SWTest();  
  10. System.out.print(st.cal_score(score, judge_type, 5));  
  11. }  
  12. int cal_score(int score[], int judge_type[], int n){  
  13. int totalExpert = 0;  
  14. int totalPublic = 0;  
  15. int numExpert = 0;  
  16. int numPublic = 0;  
  17. for(int i=0;i<n;i++) {  
  18. if(judge_type[i]==1) {  
  19. totalExpert += score[i];  
  20. numExpert ++;  
  21. }  
  22. if(judge_type[i] == 2){  
  23. totalPublic += score[i];  
  24. numPublic ++;  
  25. }  
  26. }  
  27. if(0==numPublic){  
  28. return (int)totalExpert/numExpert;  
  29. }else  
  30. {  
  31. return (int)((totalExpert/numExpert)*0.6) +   
  32. (int)((totalPublic/numPublic)*0.4);  
  33. }  
  34. }  
  35. }  

 

public class SWTest {

 

public static void main(String[] args) {

int score[] = {

34,53,65,75,64

};

int judge_type[] = {

1,1,1,2,2

};

SWTest st = new SWTest();

System.out.print(st.cal_score(score, judge_type, 5));

 

}

 

int cal_score(int score[], int judge_type[], int n){

int totalExpert = 0;

int totalPublic = 0;

int numExpert = 0;

int numPublic = 0;

for(int i=0;i<n;i++) {

if(judge_type[i]==1) {

totalExpert += score[i];

numExpert ++;

}

if(judge_type[i] == 2){

totalPublic += score[i];

numPublic ++;

}

}

if(0==numPublic){

return (int)totalExpert/numExpert;

}else

{

return (int)((totalExpert/numExpert)*0.6) +

(int)((totalPublic/numPublic)*0.4);

}

 

}

 

}

二.给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。     例如:input[] = {3, 6, 1, 9, 7}   output[] = {3, 7, 9, 6, 1};             input[] = {3, 6, 1, 9, 7, 8}    output[] = {1, 6, 8, 9, 7, 3}

     函数接口   void sort(int input[[, int n, int output[])

[java] :

  1. public class SWTest {  
  2. public static void main(String[] args) {  
  3. int input[] = {3,6,1,9,7,8};  
  4. int output[] = new int[6];  
  5. SWTest st = new SWTest();  
  6. st.sort(input, 6, output);  
  7. for(int i=0;i<output.length;i++){  
  8. System.out.print(output[i]);  
  9. }  
  10. }  
  11. void sort(int input[], int n, int output[]){  
  12. for(int i=0;i<n-1;i++){  
  13. for(int j=n-1;j>i;j--){  
  14. if(input[j]>input[j-1]) {  
  15. int temp = input[j];  
  16. input[j] = input[j-1];  
  17. input[j-1] = temp;  
  18. }  
  19. }  
  20. }  
  21. int low = n/2-1;  
  22. int high = n/2+1;  
  23. output[n/2] = input[0];  
  24. for(int i=1;i<n;){  
  25. output[low] = input[i];  
  26. low --;  
  27. i++;  
  28. if(i == n) break;  
  29. output[high] = input[i];  
  30. high++;  
  31. i++;  
  32. }  
  33. }  
  34. }  

 

public class SWTest {

 

public static void main(String[] args) {

int input[] = {3,6,1,9,7,8};

int output[] = new int[6];

SWTest st = new SWTest();

st.sort(input, 6, output);

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

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

}

}

 

void sort(int input[], int n, int output[]){

for(int i=0;i<n-1;i++){

for(int j=n-1;j>i;j--){

if(input[j]>input[j-1]) {

int temp = input[j];

input[j] = input[j-1];

input[j-1] = temp;

}

}

}

int low = n/2-1;

int high = n/2+1;

output[n/2] = input[0];

for(int i=1;i<n;){

output[low] = input[i];

low --;

i++;

if(i == n) break;

output[high] = input[i];

high++;

i++;

}

}

}

.操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50<= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为ntask中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,优先级相同的任务按照入 队顺序排列(即先入队的任务排在前面),数组元素为-1表示结束。       例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99}    system_task[] = {0, 3, 1, 7, -1}    user_task[] = {4, 8, 2, 6, -1}

       函数接口    void scheduler(int task[], int n, int system_task[], int user_task[])

[java] :

  1. void scheduler(int task[], int n, int system_task[], int user_task[]){  
  2. int min = 0 ,s =0, u =0 ;  
  3. for(int i=0;i<n-1;i++) {  
  4. min = 0;  
  5. for(int j=0;j<n;j++) {  
  6. if(task[min]>task[j]) min = j;  
  7. }  
  8. if(task[min]<50) {  
  9. system_task[s++] = min;  
  10. }else if(task[min]<=255) {  
  11. user_task[u++] = min;  
  12. }  
  13. task[min] = 300;  
  14. }  
  15. system_task[s]= -1;  
  16. user_task[u] = -1;  
  17. }  

 

void scheduler(int task[], int n, int system_task[], int user_task[]){

int min = 0 ,s =0, u =0 ;

for(int i=0;i<n-1;i++) {

min = 0;

for(int j=0;j<n;j++) {

if(task[min]>task[j]) min = j;

}

if(task[min]<50) {

system_task[s++] = min;

}else if(task[min]<=255) {

user_task[u++] = min;

}

task[min] = 300;

}

system_task[s]= -1;

user_task[u] = -1;

}

四.问题描述: 我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:   1 长度13位;  2 86的国家码打头;  3 手机号码的每一位都是数字。  请实现手机号码合法性判断的函数(注:考生无需关注手机号码的真实性,也就是说诸如86123123456789这样的手机号码,我们也认为是合法的),要求: 1 如果手机号码合法,返回0 2 如果手机号码长度不合法,返回1 3 如果手机号码中包含非数字的字符,返回2 4 如果手机号码不是以86打头的,返回3 【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。 要求实现函数: int s int verifyMsisdn(char* inMsisdn) 【输入】 char* inMsisdn,表示输入的手机号码字符串。 【输出】   【返回】  判断的结果,类型为int 示例 输入:  inMsisdn = 869123456789 输出:   返回:  1 输入:  inMsisdn = 8813912345678 输出:   返回:  3 输入:  inMsisdn = 8613912345678 输出:   返回:  0

[java] :

  1. public class PhoneNumber {  
  2. public static void main(String[] args) {  
  3. String  inMsisdn = "8613912345678";  
  4. System.out.println(new PhoneNumber().verifyMsisdn(inMsisdn));  
  5. }  
  6. int verifyMsisdn(String inMsisdn){  
  7. char[] inchars = inMsisdn.toCharArray();  
  8. if(inchars.length!=13) return 1;  
  9. for(int i=0;i<13;i++) {  
  10. if(!Character.isDigit(inchars[i])){  
  11. return 2;  
  12. }  
  13. }  
  14. if((Character.digit(inchars[0], 10)!=8 )||(Character.digit(inchars[1], 10)!=6) ) return 3;  
  15. else return 0;  
  16. }  
  17. }  

 

试题一:输入字符串长度len1,字符串s1,字符串长度len2,字符串s2。从后向前比较,以最短字符串为标准,输出不同的元素的个数。

例如:  输入:s1="1,3,5" len1=3 s2="2,4,1,7,5" len2=5

输出:1

public class Test1 {

public static void main(String[] args) {

String str1 = "1,3,5";

String str2 = "2,1,6,5";

System.out.println(getDifferentNumber(str1, 3, str2, 4));

}

public static int getDifferentNumber(String str1, int len1, String str2, int len2)

{

int count = 0;

int len = 0;

len = (len1<len2)? len1:len2;

String s1[] = str1.split(",");

String s2[] = str2.split(",");

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

{

if(!(s2[len2-i-1].equals(s1[len1-i-1])))

{

count++;

}

}

return count;

}

}

试题二:约瑟夫环问题。输入字符串长度,字符串,计数m。从前往后计数,当数到m个元素时,m个元素出列,然后将出列的数字赋值给m然后从下一个数计数循环,直到所有数字都出列,给定的数全部为大于0的数字。输出出队队列。

public class Josephus_Seq {

public static void main(String[] args) {

Josephus jo = new Josephus(new int[]{3,1,6,2,5});

jo.ShowInfo();

System.out.println();

jo.doJosephus(3);

}

}

class Node

{

public int num;

public Node next;

public Node(int i)

{

 this.num = i;

 this.next = null;

}

}

class Josephus

{

public Node head;

 

public Josephus(int[] data)

{

Node p = new Node(data[0]);

head = p;

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

{

p.next = new Node(data[i]);

p = p.next;

}

p.next = head;

}

public void doJosephus(int s)

{

Node p,q = null;

int step = s;

p = head;

while(p.next != p)

{

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

{

q = p;

p = p.next;

}

step = p.num;

System.out.println(p.num);

q.next = p.next;

p = p.next;

}

}

}

试题三:手机号码判断问题

public class PhoneNumberTest {

public static void main(String[] args) {

PhoneNumberTest pt = new PhoneNumberTest();

int res = pt.verifyMsisdn("8662923042663");

System.out.println(res);

}

public int verifyMsisdn(String num)

{

int res = 0;

char[] ch = num.toCharArray();

if(ch.length<13)

return 1;

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

{

if(!(‘0‘<=ch[i]&&ch[i]<=‘9‘))

return 2;

}

if(!((ch[0]==‘8‘)&&(ch[1]==‘6‘)))

return 3;

return res;

}

}

试题四:使用数组和链表实现数据结构-栈。

//数组实现

public class MyStack {

private Object[] obj = new Object[16];

private int size = 0;

public boolean isEmpty()

{

return size==0;

}

public void clear()

{

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

{

obj[i] = null;

}

size = 0;

}

public int lentgh()

{

return size;

}

private void resize()

{

Object[] temp = new Object[obj.length*3/2+1];

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

{

temp[i] = obj[i];

obj[i] = null;

}

obj = temp;

}

public boolean push(Object data)

{

if(size>=obj.length)

{

resize();

}

obj[size++] = data;

return true;

}

public Object pop()

{

if(size == 0)

{

return null;

}

return obj[--size];

}

}

实例应用1:将10进制的正整数转换为n进制

public String conversion(int num,int n)

{

MyStack ms = new MyStack();

Integer res = num;

while(true)

{

ms.push(res%n);

res = res/n;

if(res == 0)

{

break;

}

}

StringBuffer sb =new StringBuffer();

while((res=(Integer) ms.pop())!=null)

{

sb.append(res);

}

return sb.toString();

}

实例应用2:判断括号的匹配

public boolean isMatch(String str) {

MyStack<Character> myStack = new MyArrayStack<Character>();

char[] arr = str.toCharArray();

for (char c : arr) {

Character temp = myStack.pop();

// 栈为空时只将c入栈

if (temp == null) {

myStack.push(c);

}

// 配对时c不入栈

else if (temp == ‘[‘ && c == ‘]‘) {

}

// 配对时c不入栈

else if (temp == ‘(‘ && c == ‘)‘) {

}

// 不配对时c入栈

else {

myStack.push(temp);

myStack.push(c);

}

}

return myStack.isEmpty();

}

//链表实现

public class MyLinkedStack {

private LinkedNode top;

private int size;

public MyLinkedStack()

{

top = null;

size = 0;

}

public boolean isEmpty()

{

return size == 0;

}

public void clear()

{

top = null;

size = 0;

}

public int length()

{

return size;

}

public boolean push(Object o)

{

LinkedNode ln = new LinkedNode();

ln.data = o;

ln.pre = top;

top = ln;

size++;

return true;

}

public Object pop()

{

if(top != null)

{

LinkedNode ln = top;

top = top.pre;

size--;

return ln.data;

}

return null;

}

}

class LinkedNode

{

public Object data;

public LinkedNode pre;

}

试题五:简单四则运算

public class Operate {

public static void main(String[] args) {

String exp = "1+3*4+6/2";

System.out.println(calculate(exp));

}

public static int calculate(String exp)

{

char[] exps = exp.toCharArray();

int[] num = new int[20];

int[] str = new int[20];

int k2;

int k1 = k2 = 0;

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

{

if(exps[i]>=‘0‘&&exps[i]<=‘9‘)

{

num[k1++] = exps[i]-‘0‘;

}

if(exps[i]==‘-‘||exps[i]==‘+‘)

{

str[k2++] = exps[i];

}

if(exps[i]==‘*‘)

{

num[k1-1] = num[k1-1]*(exps[i+1]-‘0‘);

i++;

}

if(exps[i]==‘/‘)

{

num[k1-1] = num[k1-1]/(exps[i+1]-‘0‘);

i++;

}

}

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

{

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

}

System.out.println();

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

{

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

}

System.out.println();

int temp = num[0];

int j = 0;

while(j<k2)

{

if(str[j]==‘-‘)

temp = temp - num[j+1];

else if(str[j]==‘+‘)

temp = temp + num[j+1];

j++;

}

return temp;

}

}

试题六:判断回文字符

public class HuiwenArrayTest {

public static void main(String[] args) {

int[] a = new int[]{1,2,2,1};

System.out.println(HuiwenArrayTest.judge(a));

}

public static boolean judge(int[] array)

{

for(int i=0;i<array.length/2;i++)

{

if(array[i] == array[array.length-1-i])

{

continue;

}

else

return false;

}

return true;

}

}

试题七:求两个数组的异集(AB的交集)

public static void start(Integer[] a, Integer[] b)

{

List<Integer> list = new ArrayList<Integer>();

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

{

for(int j=0;j<b.length;++j)

{

if(b[j] == a[i])

{

list.add(a[i]);

break;

}

}

}

System.out.println(list);

}

}

试题八:逆序链表

非递归实现:

public void reverse()

{

MyTestNode pre = null,post = null;

MyTestNode p = head;

while(p.next!=null)

{

post = p.next;

if(post == null)

{

head = post;

}

p.next = pre;

pre = p;

p = post;

}

p.next = pre;

head = p;

}

试题九:一副牌中发五张扑克牌给你:让你判断数字的组成:有以下几种情况: 1:四条:即四张一样数值的牌(牌均不论花色)  2:三条带一对 3:三条带两张不相同数值的牌 4:两对   5:顺子  包括 10JQKA 6:什么都不是  7:只有一对  

public class Puke {

public static void main(String[] args) {

int[] a = new int[]{1,2,3,4,5};

start(a);

}

public static void start(int a[])

{

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

{

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

{

int tmp = 0;

if(a[i]>a[j])

{

tmp = a[i];

a[i] = a[j];

a[j] = tmp;

}

}

}

int k = 0;

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

{

if(a[i]==a[i+1])

k++;

}

if(k==3)

{

if(a[0]==a[3])

System.out.println("四条");

else

System.out.println("三条带一对");

}

if(k==2)

{

if(a[1]!=a[2]||a[2]!=a[3])

System.out.println("三条带两个不同的");

else

System.out.println("两对");

}

if(k==1)

System.out.println("一对");

if(k==0){

if(a[4]-a[0]==4&&a[4]-a[1]==3&&a[4]-a[2]==2&&a[4]-a[3]==1)

System.out.println("顺子");

else

System.out.println("什么都不是");

}

}

}

试题十:选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type == 1,表示专家评委,judge_type == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分  * 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。

public class Mark {

public static void main(String[] args) {

int[] a = new int[]{20,10,40,50};

int[] b = new int[]{1,2,1,2};

System.out.println(new Mark().doMark(a, b));

}

public int doMark(int[] score,int[] s)

{

int result = 0;

int dazhong = 0;

int zhuanye = 0;

int total = 0;

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

{

total+=s[i];

}

if(total==score.length)

{

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

{

zhuanye+=score[i];

}

result = zhuanye/score.length;

}

else

{

int tmpa=0;

int tmpb=0;

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

{

if(s[i]==1)

{

dazhong+=score[i];

tmpa++;

}

else if(s[i]==2)

{

zhuanye+=score[i];

tmpb++;

}

}

System.out.println(dazhong);

System.out.println(zhuanye);

result = (int) (dazhong/tmpa*0.4 + zhuanye/tmpb*0.6);

}

return result;

}

}

试题十一:给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。 

public class ArrayTest {

public static void main(String[] args) {

int[] input = new int[]{3,6,1,9,7,8};

int[] output = new int[]{0,0,0,0,0,0};

arrange(input, output);

}

public static void arrange(int[] input,int[] output)

{

//首先冒泡排序

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

{

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

{

int tmp = 0;

if(input[i]<input[j])

{

tmp = input[i];

input[i] = input[j];

input[j] = tmp;

}

}

}

//根据题目要求进行分配

output[output.length/2] = input[0];

int left = 0;

int right = 0;

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

{

if(!(i%2 == 0))

{

left++;

System.out.println(output.length/2-left+":"+input[i]);

output[output.length/2-left] = input[i];

}

else if(i%2 == 0)

{

right++;

System.out.println(output.length/2-left+":"+input[i]);

output[output.length/2+right] = input[i];

}

}

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

{

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

}

}

}

试题十二:操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50<= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为ntask中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。

public class Task {

 

public static void main(String[] args) {

int[] task = new int[]{24,56,12,78,23,6,234};

doTask(task);

}

public static void doTask(int[] task)

{

int[] tempTask = new int[task.length];

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

{

tempTask[i] = task[i];

}

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

{

System.out.print(" "+tempTask[i]);

}

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

{

int tmp = 0;

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

{

if(task[i]<task[j])

{

tmp = task[i];

task[i] = task[j];

task[j] = tmp;

}

}

}

System.out.println();

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

{

System.out.print(" "+task[i]);

}

//查找

int[] index = new int[task.length];

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

{

for(int j=0;j<tempTask.length;j++)

{

if(task[i] == tempTask[j])

index[i] = j;

}

}

System.out.println();

//执行分发

List<Integer> sys_List = new ArrayList<Integer>();

List<Integer> usr_List = new ArrayList<Integer>();

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

{

if(50>task[i])

sys_List.add(index[i]);

else if(task[i]>=50&&task[i]<=255)

usr_List.add(index[i]);

}

sys_List.add(-1);

usr_List.add(-1);

System.out.println(sys_List);

System.out.println(usr_List);

}

}

试题十三:将一个字符串的元音字母复制到另一个字符串,并排序(30分)

问题描述:有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。

说明:1、 元音字母是a,e,i,o,u,A,E,I,O,U2、 筛选出来的元音字母,不需要剔重;

最终输出的字符串,小写元音字母排在前面,大写元音字母排在后面,依次有序。

public class StrTest {

public static void main(String[] args) {

System.out.println(doSomething("adskjflssiAUIOWESLJFIOowfilk"));

}

public static String doSomething(String str)

{

StringBuffer sb = new StringBuffer();

 

char[] ch = str.toCharArray();

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

{

if(ch[i]==‘a‘||ch[i]==‘e‘||ch[i]==‘i‘||ch[i]==‘o‘||ch[i]==‘u‘

||ch[i]==‘A‘||ch[i]==‘E‘||ch[i]==‘I‘||ch[i]==‘O‘||ch[i]==‘U‘)

{

sb.append(ch[i]);

}

}

char[] tmpch = sb.toString().toCharArray();

StringBuffer small = new StringBuffer();

StringBuffer big = new StringBuffer();

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

{

if(tmpch[i]>=‘a‘&&tmpch[i]<=‘u‘)

{

small.append(tmpch[i]);

}

else

big.append(tmpch[i]);

}

char[] chsmal = small.toString().toCharArray();

char[] chbig = big.toString().toCharArray();

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

{

char tmp = ‘ ‘;

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

{

if(chsmal[j]<chsmal[i])

{

tmp = chsmal[j];

chsmal[j] = chsmal[i];

chsmal[i] = tmp;

}

}

 

}

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

{

char tmp = ‘ ‘;

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

{

if(chbig[j]<chbig[i])

{

tmp = chbig[j];

chbig[j] = chbig[i];

chbig[i] = tmp;

}

}

}

//Arrays.sort(chsmal);

char[] total = new char[sb.length()];

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

{

total[i] = chsmal[i];

}

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

{

total[chsmal.length+i] = chbig[i];

}

return String.valueOf(total);

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

java编程题

标签:

原文地址:http://www.cnblogs.com/summer-sun/p/5771100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!