我是靠谱客的博主 感性美女,这篇文章主要介绍Java基础编程题,现在分享给大家,希望可以做个参考。

   判断101-200之间有多少个素数,并输出所有素数。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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"中。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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的三次方。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
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。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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表示

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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,求其最大公约数和最小公倍数。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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空格字符。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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个数相加),几个数相加有键盘控制。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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以内的所有完数。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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次反弹多高?

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/** * 使用暴力 * @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); }

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//使用全排列方法 /*使用全排列方法 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,求应发放奖金总数?

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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又是一个完全平方数,请问该数是多少?

 //直接暴力

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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); } } } } } } }

输入某年某月某日,判断这一天是这一年的第几天?

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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,请把这三个数由小到大输出。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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口诀。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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

//直接递归

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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比,请编程序找出三队赛手的名单

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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()); } } }

打印菱形图案

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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项之和。

//规律:第二项的分子==第一项的分子+分母;第二项的分母==第一项的分子

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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!的和

//直接递归

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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!

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
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岁。请问第五个人多大?

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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是回文数,个位与万位相同,十位与千位相同。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//使用双指针解题 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+":是回文数"); } } } }

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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之内的素数

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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个数进行排序

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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矩阵对角线元素之和

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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); } }

有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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"); } } }

将一个数组逆序输出。

复制代码
1
2
3
4
5
6
7
8
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位。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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行)

 

复制代码
1
打印杨辉三角形的规律:arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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,按大小顺序输出。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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); } }

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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个数

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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的人退出圈子,问最后留下的是原来第几号的那位

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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函数中输入字符串,并输出其长度

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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; } }

字符串排序。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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; } }

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

 //这题有点问题

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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*??后的结果。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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且一个数只能用一次

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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); } }

一个偶数总能表示为两个素数之和。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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整除

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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; } }

两个字符串连接程序

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)的整数值,每读取一个值,程序打印出该值个数的*。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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); } }

计算字符串中子串出现的次数

 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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基础编程题内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部