Q1
/***
* 输入字符串长度len1,字符串s1,字符串长度len2,字符串s2。
* 从后向前比较,以最短字符串为标准,输出不同的元素的个数。
* 例如: 输入:s1="1,3,5" len1=3 s2="2,4,1,7,5" len2=5
* 输出:2
* 函数原型
* public int getDiffNum(int len1, String s1, int len2, String s2
* @author boo
*/
public class first {
public static void main(String[]args){
String s1="1,3,5" ;
int len1=3 ;
String s2="2,4,1,7,5";
int len2=5 ;
int num= getDiffNum(len1,s1,len2,s2);
System.out.println("num is:"+num);
}
public static int getDiffNum(int len1, String s1, int len2, String s2){
int len=0;
int count=0;
String[] str1=s1.split(",");
String[] str2=s2.split(",");
if(len1>len2){
len=len2;
}
else{
len=len1;
}
for(int i=len-1;i>0;i--){
if(!str1[i].equals(str2[i])){
count++;
System.out.println("str:"+str1[i]);
System.out.println("ss:"+str2[i]);
}
}
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)
* @autho
*/
import java.util.ArrayList;
public class second {
public static void main(String[] args){
int len=4;
String str="3,1,2,4" ;
int m=7 ;
String str1=getOutString(len, str, m);
System.out.println("result:"+str1);
}
public static String getOutString(int len,String str,int m){
String str1="";
String[] s=str.split(",");
ArrayList<String> list=new ArrayList<String>();
for(int i=0;i<len;i++){
list.add(s[i]);
System.out.println("-------->"+list.get(i));
}
for(int j=0;j<len;j++){
int m1=7;
int t=(m1-1)%list.size();
System.out.println("========>"+t);
str1+=list.get(t)+",";
System.out.println("str1:"+str1);
m=Integer.parseInt(list.get(t));
m1=m+t;
System.out.println("++++++++>"+m);
list.remove(t);
}
return str1;
}
}
Q3
/****
*输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形。
*例如: 输入:3+8×2/9-2
*输出:2
*函数原型
*view plain
*01. public int getMyRet(String str)
*@author BOO
*/
public class third {
public static void main(String[] args){
String str="3+8×2/9-2";
int num=getMyRet( str);
System.out.println("num="+num);
}
public static int getMyRet(String str){
char[] c=str.toCharArray();
int len=c.length;
int sum=0;
int left=0;
int right=0;
for(int i=0;i<len;i++){
System.out.println("c:"+c[i]);
}
System.out.println("lenth="+len);
String[] s=new String[len];
for(int j=0;j<len;j++){
//important change
s[j]=Character.toString(c[j]);
System.out.println("s="+s[j]);
}
for(int i=0;i<c.length;i++){
if("×".equals(s[i])){
System.out.println("i="+i);
left=Integer.parseInt(s[i-1]);
System.out.println("left="+left);
right=Integer.parseInt(s[i+1]);
System.out.println("right="+right);
sum=left*right;
System.out.println("sum="+sum);
}
if("/".equals(s[i])){
System.out.println("i="+i);
right=Integer.parseInt(s[i+1]);
System.out.println("right="+right);
sum=sum/right;
System.out.println("sum="+sum);
}
}
for(int i=0;i<s.length;i++){
if("+".equals(s[i])){
System.out.println("i="+i);
left=Integer.parseInt(s[i-1]);
System.out.println("left="+left);
sum=left+sum;
System.out.println("sum="+sum);
}
if("-".equals(s[i])){
System.out.println("i="+i);
right=Integer.parseInt(s[i+1]);
System.out.println("right="+right);
sum=sum-right;
System.out.println("sum="+sum);
}
}
return sum;
}
}
Q4
/****
* 找出字符串中出现次数最多的字母和出现的次数
* @author BOO
*/
import java.util.ArrayList;
import java.util.Collections;
public class four {
public static void main(String[]args){
String input="adadfdfseffserfefseetsdg";
char[] chars = input.toCharArray();
String[] s=new String[chars.length];
for(int j=0;j<chars.length;j++){
s[j]=Character.toString(chars[j]);
}
ArrayList<String> list=new ArrayList<String>(chars.length);
for(int i=0;i<s.length;i++){
list.add(s[i]);
}
System.out.println(list);
//paixu
Collections.sort(list);
System.out.println(list);
ArrayList as=new ArrayList();
System.out.println("---as:"+as);
for(int k=0;k<list.size();k++){
if(!as.contains(list.get(k))){
as.add(list.get(k));
System.out.println("---as:"+as);
}
}
int[] n=new int[as.size()];
for(int j=0;j<as.size();j++){
int begin=list.indexOf(as.get(j));
int last=list.lastIndexOf(as.get(j));
int num=last-begin+1;
System.out.println("begin="+begin);
System.out.println("last="+last);
System.out.println("num="+num);
n[j]=num;
System.out.println("n="+n[j]);
}
int max=0;
int m=0;
for(int i=0;i<n.length;i++){
if(n[i]>max){
max=n[i];
m=i;
}
}
System.out.println("max="+max);
System.out.print("m="+m+"\n");
System.out.println("max="+max+";the string is:"+as.get(m));
}
}
Q5
/*****
* 截取字符串,含有汉字和字母,不能截半个汉字
* @author BOO
*/
import java.io.UnsupportedEncodingException;
public class five {
public static void main(String[] args){
String s="我ABC汉字DEF";
int n=4;
try {
String str=cutString(s,n);
System.out.println(str);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String cutString(String s, int n) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
if(s!=null&&"".equals(s)){
s=new String(s.getBytes(),"GBK");
}
StringBuffer buffer=new StringBuffer();
if (n!=0&&n<s.getBytes("GBK").length){
char c;
for(int i=0;i<n;i++){
c=s.charAt(i);
System.out.println("char c="+c);
buffer.append(c);
if(five.isChinese(c)){
--n;
}
}
}
return buffer.toString();
}
private static boolean isChinese(char c) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
if(String.valueOf(c).getBytes("GBK").length>1){
return true;
}
else{
return false;}
}
}
Q6
/****
* 拆分字符串,字符串中含有逗号和数字,对数字排序并输出
* @author BOO
*/
import java.util.ArrayList;
import java.util.Arrays;
public class six {
public static void main(String[] args){
String s="123,45,25,85";
String[] str=s.split(",");
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
int[] num=new int[str.length];
for(int i=0;i<num.length;i++){
num[i]=Integer.parseInt(str[i]);
System.out.println("list-------->"+num[i]);
}
Arrays.sort(num);
for(int j=0;j<num.length;j++){
System.out.println(num[j]);
//System.out.println("de"+num[num.length-1-j]);
}
}
}
Q7
/***
* 选秀节目打分,分为专家评委和大众评委,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)
* @author BOO
*/
public class seven {
public static void main(String[] args){
int[] score=new int[]{60,80,75,50,49};
int[] judge=new int[]{1,1,1,2,2};
int n=5;
int sc=cal_score(score,judge,n);
System.out.println("sc="+sc);
}
public static int cal_score(int score[], int judge_type[], int n){
int sumZ=0,nZ=0;
int sumD=0,nD=0;
int aveZ=0;
int aveD=0;
int all=0;
for(int i=0;i<n;i++){
if(judge_type[i]==1){
System.out.println("the "+i+"is perfesser");
sumZ+=score[i];
nZ++;
System.out.println("score is="+sumZ+",the number is="+nZ);
}
else if(judge_type[i]==2){
System.out.println("the"+i+"is dazhong");
sumD+=score[i];
nD++;
System.out.println("score is="+sumD+",the number is="+nD);
}
else{
System.out.println("maybe wrong");
}
}
if(nZ!=0&&nD!=0){
aveZ=sumZ/nZ;
aveD=sumD/nD;
all=(int) (aveZ*0.6+aveD*0.4);
}else if(nD==0){
all=aveZ;
}
return all;
}
}
Q8
/****
* 给定一个数组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[])
* @author BOO
*/
public class eight {
public static void main(String[] args){
int[] input=new int[]{3,6,1,9,7,8};
int n=6;
int[] output=new int[6];
sort(input,n,output);
}
private static void sort(int input[], int n, int output[]) {
// TODO Auto-generated method stub
int t=n/2;
int tt=(n-1)/2;
int[] os=new int[t];
int[] js=new int[tt];
Arrays.sort(input);
for(int i=0;i<n;i++){
System.out.println("input[]="+input[i]);
}
if(n%2==0){
output[t]=input[n-1];
System.out.println("zhongjian ou:"+output[t]);
for(int i=0;i<n;i=i+2){
os[i/2]=input[i];
System.out.println("os"+os[i/2]);
}
for(int i=1;i<n-1;i=i+2){
js[i/2]=input[i];
System.out.println("js"+js[i/2]);
}
for(int i=0;i<t;i++){
output[i]=os[i];
System.out.println("out"+output[i]);
}
for(int i=0;i<tt;i++){
output[n-1-i]=js[i];
System.out.println("put"+output[n-1-i]);
}
for(int i=0;i<n;i++){
System.out.println(output[i]);
}
}else if(n%2==1){
//jishu
output[t]=input[n-1];
System.out.println("zhongjian"+output[t]);
for(int i=0;i<n-1;i=i+2){
os[i/2]=input[i];
System.out.println("---"+os[i/2]);
}
for(int i=1;i<n-1;i=i+2){
js[i/2]=input[i];
System.out.println(">>>>"+js[i/2]);
}
for(int i=0;i<tt;i++){
output[i]=js[i];
System.out.println("out"+output[i]);
}
for(int i=0;i<t;i++){
output[n-1-i]=os[i];
System.out.println("put"+output[n-1-i]);
}
for(int i=0;i<n;i++){
System.out.println("output"+output[i]);
}
}
}
}
Q9
/*****
* 操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。
* 其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任
*务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。
*函数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[])
* @author BOO
*/
public class nine {
public static void main(String[]args){
int[] task=new int[]{0, 30, 155, 1, 80, 300, 170, 40, 99} ;
int n=9;
int[] system_task=new int[n];
int[] user_task=new int[n];
scheduler( task, n,system_task, user_task);
}
private static void scheduler(int[] task, int n, int[] system_task,
int[] user_task) {
// TODO Auto-generated method stub
int sys = 0;
int user = 0;
for (int i = 0; i < n; i++) {
int min = 0;
for (int j = 0; j < n; j++) {
if (task[min] > task[j])
min = j;
System.out.println("task[]="+task[min]+"min="+min+"j"+j);
}
if (task[min] < 50) {
system_task[sys] =min;
System.out.println("system_task[sys]="+system_task[sys]);
sys++;
System.out.println("sys="+sys);
} else if (task[min] <= 255) {
user_task[user] = min;
System.out.println("user="+user_task[user]);
user++;
}
task[min] = 300;
}
system_task[sys] = -1;
user_task[user] = -1;
for (int i = 0; i < sys+1; i++) {
System.out.print(system_task[i] + ",");
}
System.out.println();
for (int i = 0; i < user+1; i++) {
System.out.print(user_task[i] + ",");
}
// System.out.println(user_task.toString());
}
}
Q10
/****
* 给出一个数组判断数组中2的n次方的个数,并得到该数及其下标
* @author BOO
*/
public class ten {
public static void main(String[] args){
/*
for(int i=0;i<args.length;i++){
System.out.println("arg:="+args[i]);
}
*/
//int[] num=new int[]{1,5,9,4,8,11,15};
int[] num={1,5,9,4,8,11,15};
int sum=0;
for(int i=0;i<num.length;i++){
/*
* ((num[i]&(num[i]-1))==0)来判断是否为2的幂次方
*/
if((num[i]&(num[i]-1))==0){
System.out.println(num[i]+" is 2 的幂次方");
sum++;
System.out.println("i="+i);
System.out.println("sum="+sum);
}
}
System.out.println("sum="+sum);
}
}
Q11
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class testone {
public static void main(String[] args){
testone one=new testone();
System.out.println("please input a number");
one.get();
}
private void get() {
// TODO Auto-generated method stub
String s="";
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
try {
s=br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int a=Integer.parseInt(s);
System.out.println("a*a="+a*a);
}
}
Q12
Q13
import java.util.Random;
/****
* 生成100个的随机数并求出其中的素数
* @author BOO
*/
public class testthree {
public static void main(String[] args){
int[] a=new int[101];
for(int i=0;i<101;i++){
a[i]=(int)(Math.random()*100);
System.out.println("----"+a[i]);
if(a[i]==1){
System.out.println("------------------"+a[i]);
}else
isSushu(a[i]);
}
}
private static void isSushu(int i) {
// TODO Auto-generated method stub
// 1 不是素数也不是合数
int j,k;
k=(int)Math.sqrt(i);
for(j=2;j<=k;j++){
if(i%j==0)
break;
}
if(j>k)
System.out.println("su shu is:"+i);
}
}
Q14
/****
* 产生100以内的随机数,计算随机数出现最多的次数,并在出现最多的次数中找出最大的数
* @author BOO
*/
import java.util.Arrays;
public class tstthree {
private int[] num;
public tstthree(int m){
this.num=new int[m];
System.out.println(m+"suijishu is:");
for(int i=0;i<m;i++){
num[i]=(int)(Math.random()*100);
System.out.println(num[i]+"");
}
//System.out.println();
this.getTop(this.num);
this.findMax(this.num);
}
private void findMax(int[] num2) {
// TODO Auto-generated method stub
int maxCount=0;
int maxNum=0;
int[] count=new int[101];
for(int i=0;i<num2.length&&num2[i]>0;i++){
count[num2[i]]++;
System.out.println("count is :"+count[num2[i]]);
if((count[num2[i]]>maxCount)||(count[num2[i]]==maxCount&&maxNum<num2[i])){
maxCount=count[num2[i]];
maxNum=num2[i];
}
}
System.out.println("the max count number is:"+maxCount+";the max value is:"+maxNum);
}
private void getTop(int[] num2) {
// TODO Auto-generated method stub
Arrays.sort(num2);
System.out.println("the num of sort:");
for(int i=0;i<num2.length;i++){
System.out.println(num2[i]);
}
}
public static void main(String[] args){
new tstthree(30);
}
}