概述
判断101-200之间有多少个素数,并输出所有素数。
public class demo_02 {
public static void main(String[] args) {
int count=0;
for (int i=101;i<=200;i++){
boolean flag=true;
for (int j=2;j<=i/2;j++){
if(i%j==0){
flag=false;
break;
}
}
if(flag){
count++;
System.out.print(i+" ");
if(count==10){
System.out.println();
}
}
}
System.out.println();
System.out.println(count);
}
}
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
public class demo_03 { public static void main(String[] args) throws IOException { Scanner scanner=new Scanner(System.in); String name[]=new String[5];//定义姓名数组 int number[]=new int[5];//编号 float stu[][]=new float[5][3];//定义成绩表 float avgScore[]=new float[5];//定义平均成绩 for (int i=0;i<stu.length;i++){ float score=0; System.out.println("请输入学号"); number[i]=scanner.nextInt(); System.out.println("请输入姓名"); name[i]=scanner.next(); for (int j=0;j<stu[i].length;j++){ System.out.println("请输入第"+(i+1)+"个学生的第"+(j+1)+"门成绩"); stu[i][j]=scanner.nextFloat(); if(j<stu[i].length){ score+=stu[i][j]; } } avgScore[i]=score; } //向磁盘中写入数据 FileWriter fw = new FileWriter("D://a/stud.txt"); BufferedWriter bw = new BufferedWriter(fw); bw.write("No. "+"Name "+"stu1 "+"stu2 "+"stu3 "+"avgScore"); bw.newLine(); for(int i=0;i<5;i++){ bw.write(number[i]+"");//注意: bw.write中的参数如果是int类型输出为null bw.write("t"+name[i]); for(int j=0;j<3;j++){ bw.write("t"+stu[i][j]); } bw.write("t"+(avgScore[i]/3)); bw.newLine(); } bw.close(); } }
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
public class Demo_04 { public static void main(String[] args) { for (int i=100;i<1000;i++){ if( (((i%10)*(i%10)*(i%10))+ ((i/10%10)*(i/10%10)*(i/10%10))+ ((i/100)*(i/100)*(i/100)))==i ){ System.out.println(i+":为水仙花数"); } } } }
将一个正整数分解质因数。例如:输入90,打印出90=233*5。
public class Demo_05 { static int count=0;//用来记录质因数的个数 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入一个整数"); int n=scanner.nextInt(); int result[] = f(n); int arr[]=new int[count]; for (int i=0;i<result.length;i++){ if(result[i]!=0){ arr[i]=result[i]; } } for(int i=0;i<arr.length;i++){ if(i!=arr.length-1){ System.out.print(arr[i]+"*"); }else{ System.out.print(arr[i]); } } } //判断该数的质因数的个数 public static int[] f(int n){ if(n==1){ System.out.println(n); } int j=0; int arr[]=new int[n];//用来存放质因数 for(int i=2;i<=n;){ if(n%i==0){//为质因数 arr[j++]=i;//存入数组 n=n/i;//更新n的值 count++; }else{ i++;//在这里i++是因为数字可以重复使用 } } return arr; } }
利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的 用B表示,60分以下 的用C表示
public class Demo_06 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入成绩"); float score=sc.nextFloat(); if(score>=90){ System.out.println("A"); }else if(score>=60){ System.out.println("B"); }else{ System.out.println("C"); } } }
输入两个正整数m和n,求其最大公约数和最小公倍数。
public class Demo_07 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入m的值"); int m=sc.nextInt(); System.out.println("请输入n的值"); int n=sc.nextInt(); int gcd = gcd(m, n); int lcm=lcm(m,n); System.out.println("最大公约数为:"+gcd); System.out.println("最小公倍数为:"+lcm); } //最大公约数 public static int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b); } //最小公倍数公式:x*y/gcd(x,y) public static int lcm(int a,int b){ return a*b/gcd(a,b); } }
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
可用Character类中的方法做题
Character中的:
isDigit(char ch) :确定指定的字符是否是数字。isLetter(char ch) :确定指定的字符是否是一个字母。
isSpaceChar(char ch):确定指定的字符是否是Unicode空格字符。
public class Demo_08 { public static void main(String[] args) { int zm=0; int kg=0; int number=0; int other=0; Scanner sc=new Scanner(System.in); System.out.println("请输入 一行字符"); String str=sc.nextLine(); char c[]=str.toCharArray(); for (int i=0;i<c.length;i++){ if(c[i]>=48&&c[i]<=57){ number++; }else if((c[i]>=65&&c[i]<=90)||(c[i]>=97&&c[i]<=122)){ zm++; }else if(c[i]==32){ kg++; }else{ other++; } } System.out.println("数字字符有"+number+"个"); System.out.println("字母字符有"+zm+"个"); System.out.println("空格字符有"+kg+"个"); System.out.println("其他字符有"+other+"个"); } }
求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
public class Demo_09 { public static void main(String[] args) { int s=0;//和值 int m=0;//中间变量 Scanner sc=new Scanner(System.in); System.out.println("请输入一个数"); int number=sc.nextInt(); System.out.println("请输入相加的次数"); int count=sc.nextInt(); for (int i=1;i<=count;i++){ m+=number;//更新中间变量 System.out.print(m); if(i==count){ System.out.print("="); }else{ System.out.print("+"); } s+=m;//各个数相加 number*=10;//为下一个加数做准备 } System.out.println(s); } }
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
public class Demo_10 { public static void main(String[] args) { for (int i=1;i<=1000;i++){ int sum=0; for(int j=1;j<i;j++){ if(i%j==0){//求因子 sum+=j;//计算因子的和 } } if(sum==i){ System.out.println(i+"是完数"); } } } }
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
public class Demo_01 { public static void main(String[] args) { double height=100; double sum=0; for(int i=1;;i++){ height/=2; sum+=height*2; if(i==10){ System.out.println("第10次反弹"+height+"米"); System.out.println("共经过"+(sum+100)+"米"); break; } } } }
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
/** * 使用暴力 * @param args */ public static void main(String[] args) { int temp=0; int count=0; for(int i=1;i<=4;i++) for (int j=1;j<=4;j++) for(int k=1;k<=4;k++){ if(i!=j&&i!=k&&j!=k){ temp=i*100+j*10+k; count++; System.out.print(temp+"t"); if(count%4==0){ System.out.println(); } } } System.out.println("个数:"+count); }
//使用全排列方法 /*使用全排列方法 static Set<String> set=new HashSet<String>(); public static void main(String[] args) { int arr[] = { 1,2,3,4}; int temp[]=new int[100]; int sc=0; int count=0; perm(arr,0); for (String s:set) { temp[sc++] = Integer.parseInt(s); } for (int i=0;i<temp.length;i++){ if(temp[i]!=0){ count++; System.out.println("去重全排列有:" + temp[i]); } } System.out.println(count); } //全排列 private static void perm(int[] arr, int start) { String str = ""; if (start == arr.length) { for (int i = 0; i < arr.length-1; i++) { str += arr[i] + ""; } set.add(str); } else { for (int i = start; i < arr.length; i++) { swap(arr, start, i); perm(arr, start + 1); swap(arr, start, i); } } } public static void swap(int[] array, int s, int i) { // 交换 int t = array[s]; array[s] = array[i]; array[i] = t; } */
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
public class Demo_03 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入当月利润"); int gain=sc.nextInt(); double bonus1=0; if(gain>=10){ bonus1=10*0.1; }else{ bonus1=gain*0.1; } double bonus2=bonus1+(gain-10)*0.075; double bonus3=bonus2+(gain-20)*0.05; double bonus4=bonus3+(gain-40)*0.03; double bonus5=bonus4+(gain-60)*0.015; double bonus6=bonus5+(gain-100)*0.01; double bonusSum=0; if(gain<=10){ bonusSum=bonus1; }else if(gain<=20){ bonusSum=bonus2; }else if(gain<=40){ bonusSum=bonus3; }else if(gain<=60){ bonusSum=bonus4; }else if(gain<=100){ bonusSum=bonus5; }else{ bonusSum=bonus6; } System.out.println("奖金为:"+bonusSum*10000); } }
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
//直接暴力
public class Demo_04 { public static void main(String[] args) { for (int i=1;i<=100000;i++){ for (int j=1;j<=100000;j++){ for (int k=1;k<=100000;k++){ if((i+100)==j*j){ if((i+268)==k*k){ System.out.println("j:"+j+"tt"+"k:"+k+"tt"+"i:"+i); System.out.println(j+"的平方="+(i+100)+"tt"+k+"的平方="+(i+268)+"tt"+"该数是:"+i); } } } } } } }
输入某年某月某日,判断这一天是这一年的第几天?
public class Demo_05 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int days=0;//总天数 System.out.println("输入年份"); int year=sc.nextInt(); System.out.println("输入月份"); int month=sc.nextInt(); System.out.println("输入天数"); int day=sc.nextInt(); if((year%400==0)||((year%4==0)&&(year%100!=0))){//润年 for (int i=1;i<=month;i++){ if(i==2){//二月 days+=29; }else if(i==1||i==3||i==5||i==7||i==8 ||i==10||i==12 ){//大月 days+=31; }else{//小月 days+=30; } } if(month==2){ days+=day-29;//总天数==前面几个月相加+天数-该月的总天数 }else{ if(month==1||month==3||month==5||month==7||month==8 ||month==10||month==12 ){ days+=day-31;//总天数==前面几个月相加+天数-该月的总天数 }else{ days+=day-30;//总天数==前面几个月相加+天数-该月的总天数 } } }else{//平年 for (int i=1;i<=month;i++){ if(i==2){ days+=28; }else if(i==1||i==3||i==5||i==7||i==8 ||i==10||i==12 ){ days+=31; }else{ days+=30; } } if(month==2){ days+=day-28; }else{ if(month==1||month==3||month==5||month==7||month==8 ||month==10||month==12 ){ days+=day-31; }else{ days+=day-30; } } } System.out.println(days); } }
输入三个整数x,y,z,请把这三个数由小到大输出。
public class Demo_06 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入x的值"); int x=sc.nextInt(); System.out.println("请输入y的值"); int y=sc.nextInt(); System.out.println("请输入z的值"); int z=sc.nextInt(); int arr[]={x,y,z}; //冒泡排序 for(int i=0;i<arr.length-1;i++){ for (int j=1;j< arr.length-i;j++){ if(arr[j-1]>=arr[j]){ int temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; } } } for (int i=0;i<arr.length;i++){ System.out.print(arr[i]+"t"); } } }
输出9*9口诀。
public class Demo_07 { public static void main(String[] args) { //控制行数 for(int i=1;i<=9;i++){ //控制列数 for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+i*j+" "); } System.out.println(); } } }
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
//规律:前一天桃子数=(后一天的桃子数 +1)*2==>f(n)=(f(n+1)+1)*2
//直接递归
public class Demo_08 { public static void main(String[] args) { for(int i=1;i<=10;i++){ System.out.println("第"+i+"天桃子的数量为"+f(i)); } } private static int f(int n) { if(n==10){ return 1; } return( f(n+1)+1)*2; } }
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单
public class Demo_09 { public static void main(String[] args) { List<String> list1=new ArrayList<>();//用来存放第一个对手的可能性 List<String> list2=new ArrayList<>();//用来存放第一个对手的可能性 List<String> list3=new ArrayList<>();//用来存放第一个对手的可能性 Map<String,String> map=new HashMap<>();//将所有的对手关系存放到map集合 String arr1[]={"c","a","b"}; String arr2[]={"z","y","x"}; for (int i=0;i<arr1.length;i++){ for (int j=0;j<arr1.length;j++){ if(arr1[i]=="a"&&arr2[j]!="x"){ list1.add(arr2[j]); }else if(arr1[i]=="c"&&arr2[j]!="x"&&arr2[j]!="z"){ list2.add(arr2[j]); }else if(arr1[i]!="c"&&arr1[i]!="a"){ list3.add(arr2[j]); } } } for (int i=0;i<list2.size();i++){ if(list1.contains(list2.get(i))){//因为一个对手只能出现一次 list1.remove(list2.get(i));//所以就去除相同的 } if(list3.contains(list1.get(i))&&list3.contains(list2.get(i))){ list3.remove(list1.get(i)); list3.remove(list2.get(i)); } } for (int i=0;i<list1.size();i++){//入map集合 map.put("a",list1.get(i)); map.put("b",list2.get(i)); map.put("c",list3.get(i)); } for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println(entry.getKey()+" VS "+entry.getValue()); } } }
打印菱形图案
public class Demo_10 { public static void main(String[] args) { for(int i=0;i<4;i++){//前四行 for (int j=3-i;j>0;j--){//控制空格数 System.out.print(" "); } for(int k=0;k<=2*i;k++){//每一行输出的个数 System.out.print("*"); } System.out.println(); } for (int i=1;i<=3;i++){//后三行 for(int j=1;j<i+1;j++){//控制空格数 System.out.print(" "); } for(int k=1;k<=7-2*i;k++){//每一行输出的个数 System.out.print("*"); } System.out.println(); } } }
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
//规律:第二项的分子==第一项的分子+分母;第二项的分母==第一项的分子
public class Demo_01 { public static void main(String[] args) { double x=2,y=1; double t=0;//中间变量用来存储每一项的分子 double sum=0; for(int i=0;i<20;i++){ sum+=x/y; System.out.println(x+"/"+y); t=x; x+=y; y=t; } System.out.println(); //String.format("%.3f",sum):结果保留小数点后三位数字 /* format(String format, Object... args) :使用指定的格式字符串和参数返回格式化的字符串。 */ System.out.println("前20项之和为:"+String.format("%.3f",sum)); } }
求1+2!+3!+…+20!的和
//直接递归
public class Demo_02 { public static void main(String[] args) { long sum=0; for (int i=1;i<21;i++){ sum+=f(i); } System.out.println(sum); } private static long f(int n) { if(n==1){ return n; } return n*f(n-1); } }
利用递归方法求5!
public class Demo_03 { public static void main(String[] args) { int result=f(5); System.out.println(result); } private static int f(int n) { if(n==1){ return n; } return n*f(n-1); } }
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问
第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
public class Demo_04 { public static void main(String[] args) { int age=f(5); System.out.println("第五个人"+age+"岁"); } private static int f(int n) { if(n==1) return 10; return f(n-1)+2; } }
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
public class Demo_05 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入一个小于等于5位的正整数"); int number=scanner.nextInt(); int count=1; String str=number+""; char c[]=str.toCharArray(); for(int i=c.length-1;i>=0;i--){ System.out.print(Integer.parseInt(c[i]+"")+"t"); } while(number/10!=0){ count++; number/=10; } System.out.println(); System.out.println("输入的数是"+count+"位数"); } }
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
//使用双指针解题 public class Demo_06 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入一个小于等于5位的正整数"); int number=scanner.nextInt(); String str=number+""; char c[]=str.toCharArray(); int sc=0; int lc=c.length-1; while(sc!=lc){ if(c[sc]==c[lc]){ sc++; lc--; }else{ System.out.println(number+":不是回文数"); break; } if(sc==lc){ System.out.println(number+":是回文数"); } } } }
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
public class Demo_07 { public static void main(String[] args) { week(); } private static void week() { String week[]={ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" }; Scanner scanner=new Scanner(System.in); System.out.println("请输入一个字母"); String a=scanner.next(); boolean item=true; for (int i=0;i< week.length;i++){ boolean flag=false; for (int j=0;j<2;j++){ if(a.equals(week[i].charAt(j)+"")){ item=false; if(a.equals("t")||a.equals("s")){ System.out.println("请输入第二个字母"); String b=scanner.next(); if(b.equals(week[i].charAt(j+1)+"")){ System.out.println(week[i]); flag=!flag; break; } }else{ item=false; System.out.println(week[i]); } } } if(flag){ break; } } if(item){ System.out.println("您输入的字母有误,请重新输入!"); week(); } } }
求100之内的素数
public class Demo_08 { public static void main(String[] args) { for (int i = 2; i <= 100; i++) { boolean flag=true; for (int j = 2; j <= i/2; j++) { if(i%j==0){ flag=false; break; } } if(flag){ System.out.print(i+" "); } } } }
对10个数进行排序
public class Demo_09 { public static void main(String[] args) { int num[]=new int[10]; Scanner scanner=new Scanner(System.in); System.out.println("请输入10个数"); for (int i=0;i<num.length;i++){ num[i]=scanner.nextInt(); } for(int i=0;i<num.length-1;i++){ for (int j=0;j< num.length-i-1;j++){ if(num[j]>num[j+1]){ int temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } for (int i:num) { System.out.print(i+"t"); } } }
求一个3*3矩阵对角线元素之和
public class Demo_10 { public static void main(String[] args) { int arr[][]=new int[3][3]; Scanner scanner=new Scanner(System.in); int sum=0; System.out.println("请填充3*3矩阵"); for (int i=0;i<arr.length;i++){ for (int j=0;j<arr[i].length;j++){ arr[i][j]=scanner.nextInt(); if(i==j){ if(i==1&&j==1){ sum+=arr[i][j]*2; }else{ sum+=arr[i][j]; } }else if((i==0&&j==2)||(i==2&&j==0)){ sum+=arr[i][j]; } } } System.out.println(sum); } }
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
public class Demo_01 { public static void main(String[] args) { int arr[] = {7, 3, 2, 4, 5, 6, 9, 10, 8}; Arrays.sort(arr); List<Integer> list = new ArrayList<>();//用来插入数 for (int i = 0; i < arr.length; i++) { list.add(arr[i]); } Scanner scanner = new Scanner(System.in); System.out.println("请输入一个数"); int num = scanner.nextInt(); for (int i = 0; i < arr.length; i++) { if (i == 0 && num <= list.get(i)) {//当输入的值比数组中的最小值都小时 list.add(i, num); } else if (i == list.size() - 1 && num >= list.get(i)) {//当输入的值比数组中的最大值都大时 list.add(list.size(), num); } else { if (num >= list.get(i) && num <= list.get(i + 1)) {//输入的值在数组之间时 list.add(i + 1, num); break; } } } for (int i : list) { System.out.print(i + "t"); } } }
将一个数组逆序输出。
public class Demo_02 { public static void main(String[] args) { int num[]={1,5,3,65,27,87,90,98}; for (int i=num.length-1;i>=0;i--){ System.out.print(num[i]+"t"); } } }
取一个整数a从右端开始的4~7位。
public class Demo_03 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入一个大于或等于七位的整数"); int num=scanner.nextInt(); String str=num+""; String str2=""; for (int i=str.length()-1;i>=0;i--){ str2+=str.charAt(i); } String str3 = str2.substring(3, 7);//截取4~7位 System.out.println(Integer.parseInt(str3)); } }
打印出杨辉三角形(要求打印出10行)
打印杨辉三角形的规律:arr[i][j]=arr[i-1][j-1]+arr[i-1][j];public class Demo_04 { public static void main(String[] args) { int arr[][]=new int[10][10]; for (int i=0;i<arr.length;i++){ //重新定义每行的列数 arr[i]=new int[i+1]; } for(int i=0;i<arr.length;i++){ arr[i][0]=1; arr[i][i]=1; } for(int i=2;i<arr.length;i++){//从第三行开始 for(int j=1;j<arr[i].length-1;j++){//从第二列开始,循环的次数要小于该列的列数-1,因为第一列和最后一列都赋值为1了,所以最后一列不用循环赋值 arr[i][j]=arr[i-1][j-1]+arr[i-1][j]; } } for (int i=0;i<arr.length;i++){ for(int k= arr.length-1-i;k>=0;k--){ System.out.print(" "); } for (int j=0;j<arr[i].length;j++){ System.out.print(arr[i][j]+" "); } System.out.println(); } } }
输入3个数a,b,c,按大小顺序输出。
public class Demo_05 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入a的值"); int a=scanner.nextInt(); System.out.println("请输入b的值"); int b=scanner.nextInt(); System.out.println("请输入c的值"); int c=scanner.nextInt(); if(a>b){ int temp=a; a=b; b=temp; } if(a>c){ int temp=a; a=c; c=temp; } if(b>c){ int temp=b; b=c; c=temp; } System.out.print(a+" "+b+" "+c); } }
输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
public class Demo_06 { public static void main(String[] args) { int arr[]=new int[5]; int max=0; Scanner sc=new Scanner(System.in); System.out.println("为数组赋值"); for (int i=0;i<arr.length;i++){ arr[i]=sc.nextInt(); } int min=arr[0]; for (int i=0;i<arr.length;i++){ if(max<=arr[i]){//求最大值 max=arr[i]; } if(min>=arr[i]){//求最小值 min=arr[i]; } } //交换最大值与第一个元素的位置 int temp=arr[0]; arr[0]=max; max=temp; //交换最小值与最后一个元素的位置 int item=arr[arr.length-1]; arr[arr.length-1]=min; min=item; for (int i:arr) { System.out.print(i+"t"); } } }
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
public class Demo_07 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入n的值"); int n=scanner.nextInt(); System.out.println("请输入"+n+"个数"); int arr[]=new int[n]; int arr2[]=new int[n]; for (int i=0;i<n;i++){ arr[i]=scanner.nextInt(); } System.out.println("请输入m的值"); int m=scanner.nextInt(); for (int i=0;i<arr.length;i++){ if(i<m){//将后面的m个数移到前面 arr2[i]=arr[n+i-m]; }else{//原数组前面的向后移 arr2[i]=arr[i-m]; } } System.out.println(Arrays.toString(arr2)); } }
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
public class Demo_08 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入n的值"); int n=scanner.nextInt(); int arr[]=new int[n]; int temp=0;//计数 1、2、3 int sc=arr.length;//剩余的长度 for (int i=0;i<arr.length;i++){ arr[i]=i+1; } while(sc>1){ for (int i=0;i<arr.length;i++){ if(arr[i]!=-1){ temp++; if(temp==3){ temp=0; sc--; arr[i]=-1; //删除完之后,判断还有几个可用的数 int behindSize=getBeginIndexBehindSize(arr,i); //如果可用的数在0~3之间,就将i后面的所有数移到数组的最前面,将原数组前面的移到后面去 if(behindSize>0&&behindSize<3){ moveArrayElement(arr,i); break; } } } } } System.out.println(Arrays.toString(arr)); } //重新定义数组中的各个值 private static void moveArrayElement(int[] arr, int begin) { if(begin>(arr.length-1)){ throw new RuntimeException("begin的索引超出arr的索引范围"); } int a[]=new int[begin+1];//存放原数组下标到begin的元素 int b[]=new int[arr.length-begin-1];//存放原数组下标begin后面的元素 for (int i=0;i<arr.length;i++){ if(i<a.length){ a[i]=arr[i]; }else{ b[i-a.length]=arr[i]; } } for (int i=0;i<arr.length;i++){ if(i<b.length){ arr[i]=b[i];//将原数组后面的元素移到数组前面 }else{ arr[i]=a[i-b.length];//将原数组前面的元素移到数组后面 } } } //判断有用数据的个数 private static int getBeginIndexBehindSize(int[] arr, int begin) { if(begin>(arr.length-1)){ throw new RuntimeException("begin的索引超出arr的索引范围"); } int result=0; for (int i=begin+1;i<arr.length;i++){ if(arr[i]!=-1){ result++; } } return result; } }
写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度
public class Demo_09 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入一个字符串"); String str=scanner.nextLine(); int result=strLength(str); System.out.println(result); } private static int strLength(String str) { char[] chars = str.toCharArray(); int count=0; for (int i=0;i< chars.length;i++){ count++; } return count; } }
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n
public class Demo_10 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入n的值"); int n=scanner.nextInt(); double sum=Sum(n); System.out.println("和值为:"+sum); } private static double Sum(int n) { double s=0; if(n%2==0){ for (int i=2;i<=n;i+=2){ s+=1.0/i; } }else{ for (int i=1;i<=n;i+=2){ s+=1.0/i; } } return s; } }
字符串排序。
public class Demo_01 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入一个字符串"); String str=scanner.nextLine(); char result[]=strSort(str); System.out.println(Arrays.toString(result)); } private static char[] strSort(String str) { char[] chars = str.toCharArray(); for (int i=0;i< chars.length-1;i++){ for (int j=0;j<chars.length-i-1;j++){ if(chars[j]>chars[j+1]){ char c=chars[j]; chars[j]=chars[j+1]; chars[j+1]=c; } } } return chars; } }
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
//这题有点问题
public class Demo_02 { public static void main(String[] args) { System.out.println(f(1)); } private static int f(int n) { if(n==5){ return 6; } return 5*f(n+1)+1; } }
809*??=800*??+9*??+1其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
public class Demo_03 { public static void main(String[] args) { for (int i=10;i<100;i++){ if((8*i<100&&8*i>=10)&&(9*i>=100&&9*i<1000)){ if(809*i==800*i+9*i+1){ System.out.println(i); System.out.println(809*i); break; }else { System.out.println("无解"); } } } } }
求0—7所能组成的奇数个数。(这题直接暴力解了)
要注意第一位不能为0且一个数只能用一次
public class Demo_04 { public static void main(String[] args) { int count = 0; for (int i = 0; i <= 7; i++) { if (i != 0 && i % 2 == 1) { count++; } for (int j = 0; j <= 7; j++) { if (i != 0 && i != j && (i * 10 + j) % 2 == 1) { count++; } for (int k = 0; k <= 7; k++) { if (i != 0 && i != j && j != k && i != k && (i * 100 + j * 10 + k) % 2 == 1) { count++; } for (int l = 0; l <= 7; l++) { if ( i != 0 && i != j && i != k && i != l && j != k && j != l && k != l && (i * 1000 + j * 100 + k * 10 + l) % 2 == 1 ) { count++; } for (int m = 0; m <= 7; m++) { if ( i != 0 && i != j && i != k && i != l && i != m && j != k && j != l && j != m && k != l && k != m && l != m && (i * 10000 + j * 1000 + k * 100 + l * 10 + m) % 2 == 1 ) { count++; } for (int n = 0; n <= 7; n++) { if ( i != 0 && i != j && i != k && i != l && i != m && i != n && j != k && j != l && j != m && j != n && k != l && k != m && k != n && l != m && l != n && m != n && (i * 100000 + j * 10000 + k * 1000 + l * 100 + m * 10 + n) % 2 == 1 ) { count++; } for (int o = 0; o <= 7; o++) { if ( i != 0 && i != j && i != k && i != l && i != m && i != n && i != o && j != k && j != l && j != m && j != n && j != o && k != l && k != m && k != n && k != o && l != m && l != n && l != o && m != n && m != o && n != o && (i * 1000000 + j * 100000 + k * 10000 + l * 1000 + m * 100 + n * 10 + o) % 2 == 1 ) { count++; } for (int p = 0; p <= 7; p++) { if ( i != 0 && i != j && i != k && i != l && i != m && i != n && i != o && i != p && j != k && j != l && j != m && j != n && j != o && j != p && k != l && k != m && k != n && k != o && k != p && l != m && l != n && l != o && l != p && m != n && m != o && m != p && n != o && n != p && o != p && (i * 10000000 + j * 1000000 + k * 100000 + l * 10000 + m * 1000 + n * 100 + o * 10 + p) % 2 == 1 ) { count++; } } } } } } } } } System.out.println("最终结果:" + count); } }
一个偶数总能表示为两个素数之和。
public class Demo_05 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入一个偶数"); int ou=scanner.nextInt(); if(ou%2==0){ for(int i=2;i<ou;i++){ if(isPrimer(i)){ int temp=ou-i;//第二个数 if(isPrimer(temp)){ System.out.println(ou+"="+i+"+"+temp); break; } } } }else { System.out.println("你输入的数不为偶数"); } } //判断是否为素数 private static boolean isPrimer(int i) { boolean flag=true; for(int j=2;j<i;j++){ if(i%j==0){ flag=false; } } return flag; } }
判断一个素数能被几个9整除
public class Demo_06 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入一个素数"); int num=scanner.nextInt(); int count=0; int n=9; if(isPrimer(num)){ if(num<n){ System.out.println("请输入大于9的数"); }else { while(num%n==0){ if(num%n==0){ count++; n=n*10+9; }else{ break; } } System.out.println("能被"+count+"个9整除"); } }else{ System.out.println("你输入的不是一个素数"); } } //判断是否为素数 private static boolean isPrimer(int i) { boolean flag=true; for(int j=2;j<i;j++){ if(i%j==0){ flag=false; } } return flag; } }
两个字符串连接程序
public class Demo_07 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入两个字符串"); String s1=scanner.next(); String s2=scanner.next(); String str=mergedString(s1,s2); System.out.println(str); } private static String mergedString(String s1, String s2) { return s1+s2; } }
读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
public class Demo_08 { public static void main(String[] args) { int arr[]=new int[7]; for (int i=1;i<=7;i++){ arr[i-1]=(int) (Math.random()*50+1);//随机读取 } for (int i=0;i<arr.length;i++){ for (int j=0;j<arr[i];j++){ System.out.print("*"+"t"); } System.out.println(); } } }
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
public class Demo_09 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入四位的整数"); int num=scanner.nextInt(); String str=num+""; String result=""; String arr[]=str.split(""); int number[]=new int[arr.length]; for (int i=0;i<arr.length;i++){ arr[i]=(Integer.parseInt(arr[i])+5+""); } for (int i=0;i< number.length;i++){ number[i]=Integer.parseInt(arr[i]); number[i]%=10; } int sc=0,lc=number.length-1; while(sc<lc){ int temp=number[sc]; number[sc]=number[lc]; number[lc]=temp; sc++; lc--; } for (int i=0;i< number.length;i++){ result+=number[i]; } System.out.println("最终结果为:"+result); } }
计算字符串中子串出现的次数
public class Demo_10 { public static void main(String[] args) { int result= getMarches("abcabcabcabca","ca"); System.out.println(result); } private static int getMarches(String s1, String s2) { int count=0; //s1.length()-s2.length()+1:这行代码表示数组索引最大只能到这,不能在往后取了,因为在往后取,就取不到s2.length()个字符了;也就是说这行代码是边界 for (int i=0;i<s1.length()-s2.length()+1;i++){ if(s1.substring(i,i+s2.length()).equals(s2)){ count++; } } return count; } }
以上题目有问题的话,欢迎指出!!!
最后
以上就是感性美女为你收集整理的Java基础编程题的全部内容,希望文章能够帮你解决Java基础编程题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复