java基础练习题目

1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

import java.sql.SQLOutput;
import java.util.Scanner;

/**
 * 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一
 * 对兔子,假如兔子都不死,问每个月的兔子总数为多少?
 *
 * 解题思路:1月--1对  2月--1对  3月--2对 4月--3对 5月--5对 6月--8对 7月--13对
 * 由此可得规律从第三月开始,数量都是前两个月的和,即3月等于1月加2月
 * 4月等于3月加2月  5月等于4月加3月 .......
 */
public class Test01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);   // 创建Scanner对象来接收键盘输入的数据
        System.out.println("请输入你要计算的月数:");
        int num = scanner.nextInt();   // 将键盘输入的信息扫描为int
        if (num == 1) {  // 如果为1月的时候 直接打印出
            System.out.println(num + "月的兔子是" + num + "对" + "," + "总数是" + num * 2);
            return;
        } else if (num == 2) { // 如果为2月的时候 直接打印出
            System.out.println(num + "月的兔子是" + (num - 1) + "对" + "," + "总数是" + (num - 1) * 2);
            return;
        }
        int[] list = new int[num];  // 定义一个动态的数组,用来存储
        list[0] = list[1] = 1;   // 因为1月和2月都是1对 所以直接赋值1
        for (int i = 2; i < num; i++) {  // 从2开始遍历 也就是3月开始遍历添加
            list[i] = list[i - 1] + list[i - 2];  // 从上方解题思路可得的计算
            System.out.println((i + 1) + "月的兔子是" + list[i] + "对" + "," + "总数是" + 2 * list[i]);
        }
    }
}
以下为打印结果:
请输入你要计算的月数:
12
3月的兔子是2,总数是4
4月的兔子是3,总数是6
5月的兔子是5,总数是10
6月的兔子是8,总数是16
7月的兔子是13,总数是26
8月的兔子是21,总数是42
9月的兔子是34,总数是68
10月的兔子是55,总数是110
11月的兔子是89,总数是178
12月的兔子是144,总数是288

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

/**
 * 判断101-200之间有多少个素数,并输出所有素数。
 *
 * 解题思路:素数又叫质数,就是除了1和它本身之外没有整数能被它整除的数。
 * 先定义一个for循环遍历101 - 200 然后再定义for循环用来做除数
 * 判断i 能不能整除 j
 */
public class Test02 {
    public static void main(String[] args) {
        int num = 0;    // 用来累加素数个数

        for (int i = 101; i < 200; i++) {
            boolean b = false;
            for (int j = 2; j < i; j++) {
                if ( i % j == 0) {  // 如果为true 即i能整除j
                    b = false; // b的值还是false
                    break;  // 到这里结束当前i的循环
                } else { // 如果不能整除
                    b = true;  // 重新赋值为true
                }
            }
            if (b) { // 当b为true时
                num++; // 素数个数加1
                System.out.println(i+ "\t"); // 打印当前i 即素数
            }
        }
        System.out.println(num);  // 打印素数的总数
    }
}

打印结果:
101	103	107	109	113	127	131	137	139	149	151	157	163	167	173	179	181	191	193	197	199	素数的总数是:21

3.打印出100–999所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方

package com.company.practice;

/**
 * 打印出100--999所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
 * 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方
 */
public class Test03 {
    public static void main(String[] args) {
        for (int i = 100; i <= 999; i++) {

            int a = i / 100;  // 拿出当前数的百位
            int b = (i - a * 100) / 10;  // 拿出当前数的十位
            int c = i - a * 100 - b * 10; // 拿出当前数的个位
            int sum = a * a * a + b * b * b + c * c * c;  // 计算百位 十位 个位 的立方和
            if (sum == i) {         // 如果sum等于i
                System.out.println(sum);  // 打印出100 -- 999 的所有水仙花数
            }
        }
    }
}

打印结果:
153
370
371
407

4.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

package com.company.practice;

import java.util.Scanner;

/**
 * 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
 *
 * 解题思路:先将字符串转换为一个字符串数组,然后遍历判断
 */
public class Test04 {
    public static void main(String[] args) {

        int english = 0;    // 文字母个数
        int space = 0;      // 空格键个数
        int num = 0;        // 数字个数
        int other = 0;      // 其他字符个数
        Scanner scanner = new Scanner(System.in);  // 创建Scanner对象来接收键盘输入的数据
        System.out.println("请输入任意字符:");
        String str = scanner.nextLine();        // nextLine()方法返回的是输入回车之前的所有字符。
        char[] chars = str.toCharArray();       // 将字符串对象中的字符转换为一个字符数组
        for (int i = 0; i < chars.length; i++) {
            if (Character.isLowerCase(chars[i])){  // 遍历判断数组中的对应下标元素是否为字母
                english++;
            } else if (Character.isDigit(chars[i])) {  // 遍历判断数组中的对应下标元素是否为数字
                num++;
            } else if (Character.isSpaceChar(chars[i])) { // 遍历判断数组中的对应下标元素是否为空格
                space++;
            } else {   // 即如果以上都不是 归纳为其他字符
                other++;
            }
        }
        // 最后打印所有的字符个数
        System.out.println("字母的个数:" + english);
        System.out.println("空格的个数:" + space);
        System.out.println("数字的个数:" + num);
        System.out.println("其他字符的个数:" + other);
    }
}

打印结果:
请输入任意字符:
jksjo3i2 o'ipsoi2 [ ]o o ]2o  so 4 ] o]4o44498889 783 o]o]oio ]]lks.k [k; j['
字母的个数:30
空格的个数:15
数字的个数:17
其他字符的个数:15

5.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加), 几个数相加由键盘控制

package com.company.practice;

import java.util.Scanner;

/**
 * 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
 * 几个数相加由键盘控制
 */
public class Test05 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要加的数:");
        int addNum = scanner.nextInt();
        System.out.println("请输入要想加的次数:");
        int count = scanner.nextInt();

        int sum = 0;   // 累计值
        int step = 0;  // 每次加后的数值
        for (int i = 1; i <= count; i++) {
            step = step * 10 + addNum;   // 每加一次的值
            sum += step;   // 累加的值
            System.out.println(sum);
        }
    }
}

打印结果:
请输入要加的数:
2
请输入要想加的次数:
5
2
24
246
2468
24690

6.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数

package com.company.practice;

/**
 * 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完
 * 数。
 */
public class Test06 {
    public static void main(String[] args) {

        for (int i = 2; i < 1000; i++) {
            int sum = 0;
            for (int j = 1; j <= i / 2; j++) {
                if (i % j == 0) {    // 找因子 如果i整除j 即就用j去相加
                    sum += j;  // 比方说i为6 那么j就为1 -- i/2(3)
                }
            }
            if (sum == i) {  // 如果所有的j相加等于i 即所有的因子(除本身)
                System.out.println(i);
            }
        }
    }
}

打印结果:
6
28
496

7.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

package com.company.practice;

/**
 * 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多
 * 少米?第10次反弹多高?
 */
public class Test07 {
    public static void main(String[] args) {
        double sum = 0;  // 用来累加
        double height = 100; // 定义原始的高度100 然后累计减去
        for (int i = 2; i <= 10; i++) {
            height = height / 2;  // 得出每次落下后弹回的高度
            sum += height * 2;   // 累计每次抛下后弹回的每次来回经过长度所以乘2
        }
        System.out.println(height / 2);  // 打印经过是十次后的高度
        System.out.println(sum + 100);   // 经过长度 记得是经过9次弹回的来回长度加上第一次落地经过的100
    }
}

打印结果:
0.09765625
299.609375

8.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

package com.company.practice;

/**
 * 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
 */
public class Test08 {
    public static void main(String[] args) {
        int a = 0;
        for (int i = 1; i < 5; i++) {
            for (int j = 1; j < 5; j++) {
                for (int k = 1; k < 5; k++) {
                    if (i != j && i != k && j != k) {  // 判断不重复再进行组合
                        System.out.print(i + "" + j + "" + k + "");
                        System.out.print("\t");
                        a++;  // 每次组成一次且没重复时加1
                    }
                }
            }
            System.out.println();
        }

        System.out.println(a);
    }
}

打印结果:
123	124	132	134	142	143	
213	214	231	234	241	243	
312	314	321	324	341	342	
412	413	421	423	431	432	
24

9.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

package com.company.practice;

/**
 * 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
 */
public class Test10 {
    public static void main(String[] args) {
        for (int i = 1; i < 10000; i++){  // 例如计算10000以内
            for (int j = 1; j < 1000; j++){
                if (j * j == i + 100) {   // 判断当加上100相等时再进行以下循环
                    for (int k = 1; k < 1000; k++){
                        if (k * k == i + 100 + 168){  // 当以上都符合是再打印
                            System.out.println(i);
                        }
                    }
                }
            }
        }
    }
}

打印结果:
21
261
1581


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

package com.company.practice;

import java.util.Scanner;

/**
 * 输入某年某月某日,判断这一天是这一年的第几天?
 */
public class Test11 {
    public static void main(String[] args) {
        int[] list = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  // 先将一年的月份日子定下来
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = scanner.nextInt();
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = scanner1.nextInt();
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("请输入日期:");
        int date = scanner2.nextInt();
        if (month < 1 || month > 12){  // 当输入的月份不合法时
            System.out.println("你输入的格式不合法!!!!");
            return;
        }
        int sum = 0;   // 计数
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){  // 判断是否时闰年,因为闰年的2月有29天
            list[2] = 29; // 即为润年的时候,2月重新赋值为29天
            if (month == 2){  // 判断如果你输入的为2月时,输入的天数不能超出29天 不能低于1天
                if (date > 29 || date < 1) {
                    System.out.println("你输入的不合法!!!");
                    return;
                }
            }
        }else {   // 当不为闰年的时候
            if (month == 2){
                if (date > 28 || date < 1){  // 判断如果你输入的为2月时,输入的天数不能超出28天 不能低于1天
                    System.out.println("你输入的不合法!!!");
                    return;
                }
            }
        }
        // 判断如果输入的为有31天的月份的时候,不能大于31天 小于1天
        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
            if (date > 31 || date < 1){
                System.out.println("你输入的不合法!!!");
                return;
            }
        }else { // 或者就为只有30天的月份 不能大于30天 小于1天
            if (date > 30 || date < 1){
                System.out.println("你输入的不合法!!!");
                return;
            }
        }
        for (int i = 1; i < month; i++){   // 因为输入的月份为不能确定是不是数组里的满月
            sum = sum + list[i];  // 所以要遍历输入月份少一,然后再去加上输入的天数
        }
        int num = sum + date;  // 即为输入的月份 -1 遍历相加再加上输入的天数
        System.out.println("这是" + year + "年的第" + num + "天");
    }
}

打印结果:
请输入年份:
2020
请输入月份:
2
请输入日期:
29
这是2020年的第60

11.输入三个整数x,y,z,请把这三个数由小到大输出。

package com.company.practice;

import java.util.Scanner;

/**
 * 输入三个整数x,y,z,请把这三个数由小到大输出。
 */
public class Test12 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入x:");
        int x = scanner.nextInt();
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("请输入y:");
        int y = scanner.nextInt();
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("请输入z:");
        int z = scanner.nextInt();
        if (x > y && x > z){  // 先把x最大的两种情况打印出来
            if (y > z){  // 当y大于z时
                System.out.println(z + "\t" + y + "\t" + x + "\t");
            }else{
                System.out.println(y + "\t" + z + "\t" + x + "\t");
            }
        }
        if (y > x && y > z){  // 同理
            if (x > z){
                System.out.println(z + "\t" + x + "\t" + y + "\t");
            }else {
                System.out.println(x + "\t" + z + "\t" + y + "\t");
            }
        }
        if (z > x && z > y) {  // 同理
            if (x > y){
                System.out.println(y + "\t" + x + "\t" + z + "\t");
            }else{
                System.out.println(x + "\t" + y + "\t" + z + "\t");
            }
        }
    }
}

打印结果:
请输入x:
20
请输入y:
36
请输入z:
39
20	36	39	

12.输出9*9口诀

package com.company.practice;

/**
 * 输出9*9口诀
 */
public class Test13 {
    public static void main(String[] args) {
        for (int i = 1; i < 10; i++){   // 1 -- 9
            for (int j = 1; j < i + 1; j++){  // 1 -- i
                // 当i为1时,即1 * 1 = 1
                // 当i为2时,即2 * 1 = 2, 2 * 2 = 4
                // 所以i * j 换成j * i 即1 * 2 = 2, 2 * 2 = 4
                System.out.print((j +  "*" +  i + "=" + j*i) + "\t");  // 注意这里不是println
            }
            System.out.println();  // 每打完一个循环换行
        }
    }
}

打印结果:
1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
1*4=4	2*4=8	3*4=12	4*4=16	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81	

13.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩 下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

package com.company.practice;

/**
 * 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩
 * 下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
 * 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
 */
public class Test14 {
    public static void main(String[] args) {
        int a = 1;  // 第10天剩一个
        for (int i = 0; i < 9; i++){  // 循环9天
            a = (a + 1) * 2;   // 因为吃一半还要再吃一个即a + 1 再 * 2
        }
        System.out.print("第一天摘了:" + a);
        // 这猴子真能吃,第一天吃700多个还没吃饱,还要再吃一个
    }
}


打印结果:	
第一天摘了:1534

14.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向 队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

package com.company.practice;

/**
 * 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向
 * 队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
 */
public class Test15 {
    public static void main(String[] args) {
        for (char a = 'x'; a <= 'z'; a++){  // 即循环x y z三个字符
            for (char b = 'x'; b <= 'z'; b++){
                if (a != b){   // 不能重复
                    for (char c = 'x'; c <= 'z'; c++){
                        if (b != c && a != c){    // 不能重复
                            if (a != 'x' && c != 'x' && c != 'z'){  // 因为a不跟x比 c不跟x z比
                                System.out.println(">>>>>>>>>>>>>");
                                System.out.println("a与" + a + "比赛");
                                System.out.println("b与" + b + "比赛");
                                System.out.println("c与" + c + "比赛");
                            }
                        }
                    }
                }
            }
        }
    }
}

打印结果:
>>>>>>>>>>>>>
a与z比赛
b与x比赛
c与y比赛

15.打印出如下图案(菱形)

package com.company.practice;
/**
 * 打印出如下图案(菱形)
 *     *
 *    ***
 *   *****
 *  *******
 *   *****
 *    ***
 *     *
 */
public class Test16 {
    public static void main(String[] args) {
        for (int i = 1; i <= 4; i++){       // 先把上面的4层打印了
            for (int j = 1; j <= 4 - i; j++){
                System.out.print(" ");  // 打印前面的空格
            }
            for (int k = 1; k <= 2*i-1; k++){
                System.out.print("*");  // 打印完当前循环空格后打印 *
            }
            System.out.println();  // 记得每打印完一行的 * 换行
        }

        for (int x = 3; x > 0; x--){   // 再倒叙打印
            for (int y = 1; y <= 4 - x; y++){
                System.out.print(" ");
            }
            for (int z = 1; z <= 2*x-1; z++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

打印结果:
   *
  ***
 *****
*******
 *****
  ***
   *

16.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

package com.company.practice;

/**
 * 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
 *
 * 解题思路:先找出规律,这个分子等于上一个分数的分子加分母,分母等于前一个的分子。但是这里我为了好计算
 * 用的另一个规律,即分母等于分子减去上一个分母(2/1 3/2  即3 = 1 + 2  2 = 3 - 1 )
 */
public class Test17 {
    public static void main(String[] args) {
        double molecule = 2;   // 先把第一个的分子赋值
        double denominator = 1;  //先把第一个的分母赋值
        double sum = 0;  // 计算总数的
        for (int i = 0; i < 20; i++){
            sum += molecule / denominator;   // 总数的累加
            molecule = molecule + denominator;
            denominator = molecule-denominator;
        }
        System.out.println(sum);
    }
}

打印结果:
32.66026079864164

17.利用递归方法求5!

package com.company.practice;

/**
 * 利用递归方法求5!
 */
public class Test18 {
    public static void main(String[] args) {
        System.out.println(recursion(5));  // 传值 5
    }

    public static int recursion(int n){
        if (n == 1){   // 加上一个终止条件
            return 1;
        }else {
            return recursion(n - 1) * n;  // 自己调用自己  即递归
        }
    }
}

打印结果:
120

18.求1+2!+3!+…+20!的和

package com.company.practice;

/**
 * 求1+2!+3!+...+20!的和
 */
public class Test19 {
    public static void main(String[] args) {
        long num = 1L;    // 定义起始1 因为数据后面肯定会大于int的取值范围 所以用long
        long sum = 0L;
        for (int i = 1; i <= 20; i++){
            num = i * num;
            sum = sum + num;
        }
        System.out.println(sum);
    }
}

打印结果:
2561327494111820313

19.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

package com.company.practice;

/**
 * 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问
 * 第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个
 * 人多大?
 */
public class Test20 {
    public static void main(String[] args) {
        int five = 0;
        int one = 10;  // 第一个人10岁
        for (int i = 1; i <= 4; i++){  // 循环4次
            one += 2;  // 每次都加2即为上一个人的岁数
            five = one;
        }
        System.out.println(five);
    }
}
打印结果:
18

20.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

package com.company.practice;

import sun.awt.LightweightFrame;

import javax.swing.plaf.synth.SynthLookAndFeel;
import java.util.Scanner;

/**
 * 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
 */
public class Test21 {
    public static void main(String[] args) {

//         第一种解法(笨方法)
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个不多于5位的正整数:");
        int a = scanner.nextInt();

        int x = a/10000;
        int y = a%10000/1000;
        int z = a%1000/100;
        int i = a%100/10;
        int j = a%10;
        if (x != 0) {
            System.out.println("为5位数" + "逆序为:" + j + i + z + y + x);
        } else if (y != 0) {
            System.out.println("为4位数" + "逆序为:" + j + i + z + y);
        } else if (z != 0) {
            System.out.println("为3位数" + "逆序为:" + j + i + z);
        }else if (i != 0) {
            System.out.println("为2位数" + "逆序为:" + j + i);
        }else {
            System.out.println("为1位数" + "逆序为:" + j);
        }

        // 第二种解法
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("请输入一个不多于5位的正整数:");
        int num = scanner1.nextInt();
        String s = String.valueOf(num);  // 将int类型 num转换位字符串
        System.out.println("为" + s.length() + "位数");  // 打印其长度即可知几位数
        char[] chars = s.toCharArray();  // 将其转为字符数组
        System.out.print("逆序为:");
        for (int k = s.length() - 1; k >= 0; k--){  // 倒叙打印 记得要长度减1,因为不可超出索引
            System.out.print(chars[k]);
        }

    }
}

打印结果:
请输入一个不多于5位的正整数:
12344位数逆序为:4321
请输入一个不多于5位的正整数:
567895位数逆序为:98765

21.一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

package com.company.practice;

import java.util.Scanner;

/**
 * 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
 */
public class Test22 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个5位数:");
        int a = scanner.nextInt();
        String s = String.valueOf(a);
        char[] chars = s.toCharArray();
        if ((chars[4] == chars[0]) && (chars[3] == chars[1])){  // 判断个万位 十千位 是否相同
            System.out.println(a + ":这个数是回文数");
        }else {
            System.out.println(a + ":这个数不是回文数");
        }

    }
}

打印结果:
请输入一个5位数:
12321
12321:这个数是回文数

22.求100之内的素数

package com.company.practice;

/**
 * 求100之内的素数
 */
public class Test23 {
    public static void main(String[] args) {
        int a = 0;
        for (int i = 2; i <= 100; i++){
            boolean b = true;  // 因为2位素数,所以默认初始为true
            for (int j = 2; j < i; j++){
                if (i % j == 0){  // 当能整除时,将b改为false
                    b = false;
                    break;
                } else {
                    b = true;  // 否则不变,b还是true
                }
            }
            if (b){  // 如果b为true,即打印素数
                a++;
                System.out.print(i + "\t");
                if (a%8 == 0) {
                    System.out.println();
                }
            }
        }
    }
}

打印结果:
2	3	5	7	11	13	17	19	
23	29	31	37	41	43	47	53	
59	61	67	71	73	79	83	89	
97	

23.对10个数进行排序

package com.company.practice;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * 对10个数进行排序
 */
public class Test24 {
    public static void main(String[] args) {
        // 方法1
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入10个数:");
        int[] a = new int[10];
        for (int i = 0; i < 10; i++){
            a[i] = scanner.nextInt();
        }
        Arrays.sort(a);   // 采用数组的Arrays.sort方法直接进行排序
        for (int s:a){
            System.out.println(s);
        }

        // 这里再写一个使用排序算法的解法 选择排序
        for (int j = 0; j < a.length - 1; j++){
            for (int k = j + 1; k < a.length; k++){
                if (a[j] > a[k]){
                    int b = a[j];
                    a[j] = a[k];
                    a[k] = b;
                }
            }
        }
        System.out.println("选择排序:");
        for ( int z = 0; z < 10; z++){
            System.out.println(a[z]);
        }

    }

}

打印结果:
请输入10个数:
12
10
22
8
5
3
6
18
15
4
3	4	5	6	8	10	12	15	18	22	
选择排序:
3	4	5	6	8	10	12	15	18	22	

24.求一个3*3矩阵对角线元素之和

package com.company.practice;

import java.util.Scanner;

/**
 * 求一个3*3矩阵对角线元素之和
 */
public class Test25 {
    public static void main(String[] args) {
        int[][] a = new int[3][3];   // 定义一个二维数字组
        System.out.println("请输入9个数字:");
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++){
            for (int j = 0; j < 3; j++){
                a[i][j] = scanner.nextInt();
            }
        }
        System.out.println("输出二维数组:");
        for (int k = 0; k < 3; k++){
            for(int l = 0; l < 3; l++){
                System.out.print(a[k][l] + "\t");
            }
            System.out.println();
        }

        System.out.println("计算:");
        int sum = 0;
        for (int x = 0; x < 3; x++){
            for (int y = 0; y < 3; y++){
                if ((x == y) || (x + y == 2)) {  //从二维数组找规律 可得知
                    sum = sum + a[x][y];
                }
            }
        }
        System.out.println(sum);
    }
}

打印结果:
请输入9个数字:
1
2
3
4
5
6
7
8
9
输出二维数组:
1	2	3	
4	5	6	
7	8	9	
计算:
25
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值