最新JAVA编程题全集50题及答案.docx
- 文档编号:30644628
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:44
- 大小:30.97KB
最新JAVA编程题全集50题及答案.docx
《最新JAVA编程题全集50题及答案.docx》由会员分享,可在线阅读,更多相关《最新JAVA编程题全集50题及答案.docx(44页珍藏版)》请在冰豆网上搜索。
最新JAVA编程题全集50题及答案
写一个函数,例如:
给你的abc则输出abcacbbacbcacabcba
import java.util.ArrayList;
import java.util.List;
public class NumTest {
public static void main(String[] args) {
String s="ABCD";//原字符串
List
System.out.println(result.size());;
System.out.println(result);
}
/**
* 列出基础字符串(base)的所有组合
* @param base 以该字符串作为基础字符串,进行选择性组合。
* @param buff 所求字符串的临时结果
* @param result 存放所求结果
*/
public static List
List
if(base.length()<=0){
result.add(buff);
}
for(int i=0;i List result.addAll(temp); } return result; } } +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public static void main(String[] args) { String s="ABCD";//原字符串 List list(s, "", result);//列出字符的组合,放入result System.out.println(result.size());; System.out.println(result); } /** * 列出基础字符串(base)的所有组合 * @param base 以该字符串作为基础字符串,进行选择性组合。 * @param buff 所求字符串的临时结果 * @param result 存放所求结果 */ public static void list(String base,String buff,List if(base.length()<=0){ result.add(buff); } for(int i=0;i list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i),result); } } +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 写一个函数,给你一个字符串倒序输出来 publicStringgetString(Stringstr){ if(str! =null){ StringnewStr=""; for(inti=0;i { charc=str.charAt(str.length()-1-i); newStr=newStr+c; } returnnewStr; }else{ returnnull; } } 不使用中间变量把两个变量的值互换 inta=10; intb=100; a=a*b; b=a/b; a=a/b; System.out.print("a="+a+"b="+b); 折半查找 publicclassTest { publicstaticint[]data={12,15,20,10,19,3,89,32,39,47,55};//原始数据 publicstaticintcounter=1;//计数器 publicstaticintlen=data.length; publicstaticvoidmain(Stringargs[]) { //要查找的数 intkeyValue=89; Testt=newTest(); booleanb=t.BinarySearch(keyValue); if(b) { //输出查找次数 System.out.println("SearchTime="+counter); }else { //输出没有找到数据 System.out.println("NoFound! ! "); } } //--------------------------------------------------- //折半查找法 publicstaticbooleanBinarySearch(intkeyValue) { intleft;//左边界变量 intright;//右边界变量 intmiddle;//中位数变量 System.out.println("数据长度: "+len); left=0; right=len-1; while(left<=right) { //由于源数据不是顺序的,需先进行排序 inttemp; for(inti=0;i { for(intj=0;j { if(data[j]>data[j+1]) { temp=data[j]; data[j]=data[j+1]; data[j+1]=temp; } } } middle=(left+right)/2; //欲查找值较小 if(keyValue { right=middle-1;//查找前半段 } //欲查找值较大 elseif(keyValue>data[middle]) { left=middle+1;//查找后半段 } //查找到数据 elseif(keyValue==data[middle]) { System.out.println("data["+middle+"]="+data[middle]); returntrue; } counter++; } returnfalse; }} 1.将thisisatest转化为ThisIsATest Stringstr="thisisaman"; charc[]=newchar[str.length()]; str.getChars(0,str.length(),c,0); if(c[0]>='a'&&c[0]<='z') { c[0]=(char)(c[0]-32); } for(inti=1;i<=c.length-1;i++) { if(c[i]=='') { c[i+1]=(char)(c[i+1]-32); } } str=newString(c); System.out.print(str); 2.将Thisisatest倒着输出tsetasisihT(用StringBuffer) Stringstr="thisisaman"; StringBuffersb=newStringBuffer(str.length()); for(intj=str.length()-1;j>=0;j--) { sb.append(str.charAt(j)); } System.out.print(sb); 3.用递归求N! =N*(N-1)*(N-2)*...*2*1; longdigui(inti) {if(i==0||i==1) { return1; } else { returni*digui(i-1); } } 4.写一个单例模式(遇到两次) publicclassTest { privateTest(){} privatestaticTesttest; publicstaticTestgetInstance() { if(test==null) { test=newTest(); } returntest; }} 5.//统计字符串的个数"I'mgotoswimming" //I: 1//': 1//m: 3//空格: 3//g: 2//... Stringstr="I'mgotoswimming"; Set for(inti=0;i Strings=str.substring(i,i+1); set.add(s); } Iteratorit=set.iterator(); while(it.hasNext()) { Stringsr=(String)it.next(); intk=0; for(intj=0;j if(sr.equals(str.substring(j,j+1))){ k++; } } System.out.println(s+"有"+k+"个"); } 6.对字母进行排序,如: s,a,g,d,b; Strings="sagdb"; Listt=newArrayList(); for(inti=0;i { Stringxx=s.substring(i,i+1); t.add(xx); } java.util.Collections.sort(t); System.out.println(t); 题目: 古典问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 publicclasslianxi01{ publicstaticvoidmain(String[]args){ System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); intf1=1,f2=1,f,M=24; for(inti=3;i<=M;i++){ f=f2; f2=f1+f2; f1=f; System.out.println("第"+i+"个月的兔子对数: "+f2); }}} 【程序2】 题目: 判断101-200之间有多少个素数,并输出所有素数。 程序分析: 判断素数的方法: 用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 publicclasslianxi02{ publicstaticvoidmain(String[]args){ intcount=0; for(inti=101;i<200;i+=2){ booleanb=false; for(intj=2;j<=Math.sqrt(i);j++) { if(i%j==0){b=false;break;} else {b=true;} } if(b==true){count++;System.out.println(i);} } System.out.println("素数个数是: "+count); }} 【程序3】 题目: 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 publicclasslianxi03{ publicstaticvoidmain(String[]args){ intb1,b2,b3; for(intm=101;m<1000;m++){ b3=m/100; b2=m%100/10; b1=m% 10; if((b3*b3*b3+b2*b2*b2+b1*b1*b1)==m){ System.out.println(m+"是一个水仙花数");} }}} 【程序4】 题目: 将一个正整数分解质因数。 例如: 输入90,打印出90=2*3*3*5。 程序分析: 对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 importjava.util.*; public class lianxi04{ publicstaticvoidmain(String[]args){ Scanners=newScanner(System.in); System.out.print("请键入一个正整数: "); int n =s.nextInt(); intk=2; System.out.print(n+"="); while(k<=n){ if(k==n){System.out.println(n);break;} elseif(n%k==0){System.out.print(k+"*");n=n/k;} else k++; } } } 【程序5】 题目: 利用条件运算符的嵌套来完成此题: 学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 importjava.util.*; publicclasslianxi05{ publicstaticvoidmain(String[]args){ intx; chargrade; Scanners=newScanner(System.in); System.out.print("请输入一个成绩: "); x=s.nextInt(); grade=x>=90? 'A' : x>=60? 'B' : 'C'; System.out.println("等级为: "+grade); }} 【程序6】 题目: 输入两个正整数m和n,求其最大公约数和最小公倍数。 /**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。 */ importjava.util.*; public class lianxi06 { publicstaticvoidmain(String[]args){ int a,b,m; Scanners=newScanner(System.in); System.out.print("键入一个整数: "); a=s.nextInt(); System.out.print("再键入一个整数: "); b=s.nextInt(); deffcd=newdeff(); m=cd.deff(a,b); intn=a*b/m; System.out.println("最大公约数: "+m); System.out.println("最小公倍数: "+n); }} classdeff{ publicintdeff(intx,inty){ intt; if(x t=x; x=y; y=t; } while(y! =0){ if(x==y)returnx; else{ intk=x%y; x=y; y=k; } } returnx; }} 【程序7】 题目: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 importjava.util.*; publicclasslianxi07{ publicstaticvoidmain(String[]args){ intdigital=0; intcharacter=0; intother=0; intblank=0; char[]ch=null; Scannersc=newScanner(System.in); Strings=sc.nextLine(); ch=s.toCharArray(); for(inti=0;i if(ch>='0'&&ch<='9'){ digital++; }elseif((ch>='a'&&ch<='z')||ch>'A'&&ch<='Z'){ character++; }elseif(ch==''){ blank++; }else{ other++; } } System.out.println("数字个数: "+digital); System.out.println("英文字母个数: "+character); System.out.println("空格个数: "+blank); System.out.println("其他字符个数: "+other); }} 【程序8】 题目: 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 importjava.util.*; publicclasslianxi08{ publicstaticvoidmain(String[]args){ longa,b=0,sum=0; Scanners=newScanner(System.in); System.out.print("输入数字a的值: "); a=s.nextInt(); System.out.print("输入相加的项数: "); intn=s.n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 JAVA 编程 全集 50 答案