Java中常见的30道例题(附代码)

在这里插入图片描述

目录

 第一题:判断数组中奇数偶数的个数并求和

第二题:判断三个数中的最大值

第三题:剔除某些数据并打印输出

第四题:输入0到7判断星期几

第五题:将一个数组倒序输出

第六题:输入一个数判断是否是素数

第七题:判断一定范围内的素数,并按照每行八个打印输出

第八题:求绝对值

第九题:求自然数的个位数之和

第十题:求在指定范围内的完数并打印输出

第十一题:求一个数的阶乘

第十二题:税后工资问题

第十三题:肥胖指数问题

第十四题:银行业务输入计算

第十五题:打印金字塔

第十六题:逻辑判断问题

第十七题:遍历二维数组

第十八题:如何获取邮箱中的姓名问题

第十九题:随机数问题

第二十题:求最小公倍数最大公约数问题

第二十一题:最优选择问题

第二十二题:三元运算问题

第二十三题:拼接打印问题

第二十四题:水仙数问题

第二十五题:加减乘除运算问题

第二十六题:顺序数组打乱输出问题

第二十七题:斐波那契数列问题

第二十八题:猴子摘桃问题

第二十九题:手机选号优惠问题

第三十题:将字符串中的小写字母转化成大写字母问题


 第一题:判断数组中奇数偶数的个数并求和

package pratice;
public class 求和 {
    public static void main(String[] args) {
        int arr[]=new int[]{1,2,3,92,45,67,68,57};
        int sum=0;
        int sums=0;
        int m=0;
        int n=0;
        for(int i=0;i<arr.length;i++) {
            if (arr[i] % 2 == 0) {
                sum += arr[i];
                n++;
            } else{
                sums+=arr[i];
                m++;
            }
        }
        System.out.println("奇数个为数"+m+",奇数和"+sums);
        System.out.println("偶数个为数"+n+",偶数和"+sum);
    }
}

第二题:判断三个数中的最大值

package pratice;

import java.util.Scanner;

/*
接收用户输入的3个整数,并将它们的最大值作为结果输出
 */
public class 找最大数 {
    public static void main(String[] args) {
int a = 0;
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入三个整数");
        int x =scanner.nextInt();
        int y=scanner.nextInt();
        int z=scanner.nextInt();
        if(x>=y){

            a=x;
        }else{
            a=y;
        }
        if(a>=z){
            System.out.println("三个数的最大值为"+a);

        }else {
            System.out.println("三个数中的最大值为"+z);
        }
    }
}

第三题:剔除某些数据并打印输出

package pratice;
/*
练习题:打印100以内除了尾数为3,5,7的所有数
 */
public class 剔除数据打印输出 {
    public static void main(String[] args) {
        for(int i=1;i<=100;i++){

              int x=i%10;
            //System.out.println(x);
            if(x==3||x==5||x==7 ) {
                continue;
            }
            System.out.println(i);
        }
    }
}

第四题:输入0到7判断星期几

package pratice;

import java.util.Scanner;

//输入数字1~7,输出对应星期几
public class 判断星期几 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入星期几");
        int x=scanner.nextInt();
        switch (x){
            case 1:
                System.out.println("今天是星期一");
                break;
            case 2:
                System.out.println("今天是星期二");
                break;
            case 3:
                System.out.println("今天是星期三");
                break;
            case 4:
                System.out.println("今天是星期四");
                break;
            case 5:
                System.out.println("今天是星期五");
                break;
            case 6:
                System.out.println("今天是星期六");
                break;
            case 7:
                System.out.println("今天是星期日");
                break;


        }
    }
}

第五题:将一个数组倒序输出

package pratice;

public class 倒叙输出数组 {
    public static void main(String[] args) {
        int arr[]={1,2,3,4,5,6,7,8};
        for (int i=arr.length-1;i>=0;i--){
            System.out.print(arr[i]+" ");
        }

    }
}

第六题:输入一个数判断是否是素数

package pratice;

import java.util.Scanner;

public class 判断素数 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个数");
        int n = scan.nextInt();
        int i;
        for (i = 2; i <n; i++) {
            if (n % i == 0) {
                System.out.println(n + "不是素数");
                break;
            }
        }
            if (n == i) {
                System.out.print(n + "是素数");
            }
        }
    }

第七题:判断一定范围内的素数,并按照每行八个打印输出

package pratice;

public class 求素数 {
    public static void main(String[] args) {
        int n=0;
        int sum=0;
        for (int i=2;i<200;i++){
            boolean flag=true;
            for(int j=2;j<i-1;j++){
                if(i%j==0){
                    flag=false;
                    break;
                }
                }
            if(flag){
                System.out.print(i+" ");
                n++;
                if(n%8==0){
                    System.out.print("\n");
                }
                   sum+=i;
            }
        }
        System.out.println("\n");
        System.out.println("这些数中共有"+n+"个素数"+"和为"+sum);
}
}

第八题:求绝对值

package pratice;

import java.util.Scanner;

/*
绝对值是指一个数在数轴上所对应点到原点的距离,用“| |”来表示。负数的绝对值是他去掉负号以后的值,
而非负数(0和正数)的绝对值是他本身。请定义一个方法,接收用户输入的数字,输出绝对值结果。
 */
public class 求绝对值 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个数");
        double x=scanner.nextDouble();
        double result=Subs(x);
        System.out.println(x+"的绝对值为"+result);
    }
    public static double Subs(double x){
        if(x>=0){
            return x;
        }else
            return -x;
    }
}

第九题:求自然数的个位数之和

package pratice;

import java.util.Scanner;

/*
练习题:求任意自然数各位数之和
接收用户输入的任意自然数,累计所有位数数字之和
需求:接收用户输入的行数,
 */
public class 求自然数的个位数之和 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请任意输入一个自然数");
        int a=scanner.nextInt();
        int sum=0;
        while (a!=0){
            int x=a%10;
            sum=sum+x;
            a=a/10;
        }
        System.out.println(sum);

    }
}

第十题:求在指定范围内的完数并打印输出

package pratice;
/*
练习题:求1000以内的完数
完数:如果一个数等于其所有因子之和,我们就称这个数为"完数",比如6的因子为1,2,3 6 = 1 + 2 + 3,那么6就是一个完数
 */
public class 求范围内的完数 {
    public static void main(String[] args) {
      for (int i=1;i<=1000;i++){
          int sum=0;
         for (int j=1;j<=i/2;j++){
             if(i%j==0){
                 sum=sum+j;
             }
         }
         if(sum==i){
             System.out.println(i);
         }
      }
    }
}

第十一题:求一个数的阶乘

package pratice;

import java.util.Scanner;

/*
练习题:求数字阶乘(for循环版)
需求:接收用户输入的数字,计算该数字的阶乘结果
已知:负数不可以有阶乘,0的阶乘结果是1,
5 ! = 5 x 4 x 3 x 2 x 1
 */
public class 求数字的阶乘 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个数");
        int x=scanner.nextInt();
        int sum=1;
        int groupsum=0;
        for(int i=1;i<=x;i++){
            //sum=sum*x;
            sum=sum*i;
            //groupsum=groupsum+sum;

        }
        System.out.println("前"+x+"项的阶乘为"+sum);
        groupsum=groupsum+sum;
        System.out.println("阶乘的前"+x+"项和为"+groupsum);
    }
}

第十二题:税后工资问题

package pratice;

import java.util.Scanner;

/*
2019年1月1日起,国家推出新的个人所得税政策,起征点上调值5000元。也就是说税前工资扣除三险一金(三险一金数额假设是税前工资的10%)后如果不足5000元
,则不交税。如果大于5000元,那么大于5000元的部分按梯度交税,具体梯度比例如下:
0 ~ 3000元的部分,交税3%
3000 ~ 12000元的部分,交税10%
12000 ~ 25000的部分 , 交税20%
25000 ~ 35000的部分,交税25%
35000 ~ 55000的部分,交税30%
55000 ~ 80000的部分,交税35%
超过80000的部分,交税45%
比如:小蓝入职一家企业后,税前工资是18000,则他每月该交个税的部分是18000-1800-5000=11200元,个税缴纳数额是3000×3%+8200×10%=910元。税后工资15290元。
请完成一个个税计算程序,在用户输入税前工资后,计算出他对应的纳税数额,以及税后工资为多少?

 */
public class 求税后工资问题 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你的工资");
        double m=scanner.nextDouble();
        double x=0;//x表示需要交的税
        double y=0;//实际所发工资
        double n=m-m*0.1-5000;//需要交税的工资
        if(n<=3000){
             x=n*0.03;
             y=m-x-m*0.1;
            System.out.println("工资需要交税"+x+"实际发的工资为"+y);
        }if(n>3000&&n<=12000){
             x=3000*0.03+(n-3000)*0.1;
             y=m-x-m*0.1;
            System.out.println("工资需要交税"+x+"实际发的工资为"+y);
        }
        if(n>12000&&n<=25000){
            x=3000*0.03+9000*0.1+(n-12000)*0.2;
            y=m-x-m*0.1;
            System.out.println("工资需要交税"+x+"实际发的工资为"+y);
        }if(n>25000&&n<=35000){
            x=3000*0.03+9000*0.1+13000*0.2+(n-25000)*0.25;
            y=m-x-m*0.1;
            System.out.println("工资需要交税"+x+"实际发的工资为"+y);
        }if(n>35000&&n<=55000){
            x=3000*0.03+9000*0.1+13000*0.2+10000*0.25+(n-35000)*0.3;
            y=m-x-m*0.1;
            System.out.println("工资需要交税"+x+"实际发的工资为"+y);
        }if(n>55000&&n<=80000){
            x=3000*0.03+9000*0.1+13000*0.2+10000*0.25+20000*0.3+(n-55000)*0.35;
            y=m-x-m*0.1;
            System.out.println("工资需要交税"+x+"实际发的工资为"+y);
        }if(n>80000){
            x=3000*0.03+9000*0.1+13000*0.2+10000*0.25+20000*0.3+25000*0.35+(n-80000)*0.45;
            y=m-x-m*0.1;
            System.out.println("工资需要交税"+x+"实际发的工资为"+y);
        }

    }
}

第十三题:肥胖指数问题

package pratice;

import java.util.Scanner;

/*BMI 指数测试 BMI = 体重 (kg) / 身高² (m)
接收用户输入的身高和体重,将判断结果输出
        过轻:低于18.5
        正常:18.5 ~ 22.9
        偏胖:23 ~ 24.9
        肥胖:25 ~ 29.9
        重度肥胖:高于30
        极度肥胖:高于40*/
public class 肥胖指数判断 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你的身高");
        double high=scanner.nextDouble();
        System.out.println("请输入你的体重");
        double weight=scanner.nextDouble();
        double BMI=weight/(high*high);
        if(BMI<18.5){
            System.out.println("过轻");
        }if(BMI>=18.5 & BMI<=22.9){
            System.out.println("正常");
        }if(BMI>=23 & BMI<=24.9){
            System.out.println("偏胖");
        }if(BMI>=25 & BMI<=29.9){
            System.out.println("肥胖");
        }if(BMI>=30 & BMI<=40){
            System.out.println("重度肥胖");
        }if(BMI>40){
            System.out.println("极度肥胖");
        }
    }
}

第十四题:银行业务输入计算

package pratice;
import java.util.Scanner;
/*
某银行推出了整存整取定期储蓄业务,其存期分为一年、两年、三年、五年,到期凭存单支取本息。存款年利率表如下:
存期 年利率(%)
一年 2.25
两年 2.7
三年 3.25
五年 3.6
请存入一定金额(1000起存),存一定年限(四选一),计算到期后得到的本息总额。
提示:存入金额和存入年限均由键盘录入
本息计算方式:本金+本金×年利率×年限
 */
public class 银行收入计算 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你要存入的金额");
        double m=scanner.nextDouble();
        System.out.println("请输入你要存入的年限");
        int n=scanner.nextInt();
        if(m<1000){
            System.out.println("对不起,我们银行最低存款1000元");
        }else {
            switch (n){
                case 1:{
                    m=m+m*0.025*1;
                    System.out.println(m);
                    break;
                }
                case 2:{
                    m=m+m*0.027*2;
                    System.out.println(m);
                    break;
                }
                case 3:{
                    m=m+m*0.035*3;
                    System.out.println(m);
                    break;
                }
                case 5:{
                    m=m+m*0.036*5;
                    System.out.println(m);
                    break;
                }
            }
        }
    }
}

第十五题:打印金字塔

package pratice;

public class 金字塔 {
    public static void main(String[] args) {
        int n = 5;
        System.out.println("半金字塔");
        for (int i = 0; i < n; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println("");
        }
        System.out.println("----------");
        System.out.println("全金字塔");
        for (int i = 0; i < n; i++) {
            for (int j = 0; j <= n - i; j++) {
                System.out.print(" ");
            }
            for (int k = 0; k <= i; k++) {
                System.out.print("* ");
            }

            System.out.println("");
        }

    }
}

第十六题:逻辑判断问题

package pratice;
/*已知小红同学有25元,她攒了几天钱之后发现自己的现在的钱比原来的2倍还多出10块。而小蓝同学有30元,
 他攒了几天钱之后发现自己的钱正好是原来的2倍。于是小胖说:小红和小蓝现在的钱一样多,请问,他说的对吗?*/
public class 逻辑判断问题 {
    public static void main(String[] args) {
        int a=25;
        int b=30;
                a=a*2+10;
                b=b*2;
        System.out.println(a==b);
    }
}

第十七题:遍历二维数组

package pratice;

public class 遍历二维数组 {
    public static void main(String[] args) {
        char[][]a= {
   
   {'好','好','学','习',},
                {'天','天','向','上'}

        };
        for (int i=0;i<a[0].length;i++){
            for (int j=a.length-1;j>=0;j--){
                System.out.print(a[j][i]);
            }
        }
        System.out.println();
    }
}

第十八题:如何获取邮箱中的姓名问题

package pratice;

import java.util.Scanner;

/*
练习题: 获取邮箱名字
接收用户输入的邮箱名,获取邮箱的名字
比如:[email protected],输出cxy
 */
public class 获取邮箱中的姓名 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你的邮箱");
        String str=scanner.nextLine();
        String n=getName(str);
        System.out.println(n);
    }
     static String getName(String str){
        int index=str.indexOf("@");
        if(index==-1){
            System.out.println("你输入的邮箱错误,请重新输入邮箱");



         }
        return str.substring(0,index);
    }
}

第十九题:随机数问题

package pratice;
/*
练习题:多次生成随机数,并打印第一次出现大于0.999 时的次数与生成的随机数
 */
public class 生成随机数并求和 {
    public static void main(String[] args) {
        for (int i=1; ;i++){
            double x=Math.random();
            if(x>0.999){
                System.out.println("第"+i+"次,生成的随机数"+x);
                break;
            }
        }
    }
}

第二十题:求最小公倍数最大公约数问题

package pratice;

import java.util.Scanner;
//求两个数的最大公约数,最小公倍数
public class 最大公约数最小公倍数 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入两个整数");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c=Yue(a,b);
        System.out.println("最大公约数为"+c);
        long d=Bei(a,b);
        System.out.println("最小公倍数为"+d);
    }
//求最大公约数的函数
    public static int Yue(int a, int b) {
        int min = a < b ? a : b;
        for (int i = min; i >= 1; i--) {
            //i能把a和b同时整除
            if (a % i == 0 && b % i == 0) {
                return i;
            }
        }
        return 0;
    }
    //求最小公倍数的函数
    public static long Bei(long a,long b) {
        long max = a < b ? a : b;
        for (long i = max; ;i += max) {
            if (i % b == 0 && i % a == 0){
                return i;
        }
    }
    }
}

第二十一题:最优选择问题

package pratice;
/*
小蓝同学想买一个价值8888元的新手机,她的旧手机在二手市场能卖1880元,而手机专卖店推出以旧换新的优惠
,把她的旧手机交给店家,新手机就能够打7.5折优惠。为了更省钱,小蓝要不要以旧换新?
 */
public class 最优选择问题2 {
    public static void main(String[] args) {
        double a=8888-1880;
        double b=8888*0.75;
        if(a>b){
            System.out.println("以旧换新"+",新买手机价格"+b);
        }else {
            System.out.println("不依旧换新,新买手机价格为"+a);
        }
    }
}

第二十二题:三元运算问题

package pratice;
/*
某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,
但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱?
 */
public class 最优选择问题 {
    public static void main(String[] args) {
    int a=24,b=8,c=3;
    double money1=24+8+3;
        money1=(money1>=30?money1*0.8:money1);
        double money2=16+8+3;
        double money=(money1>=money2?money2:money1);
        System.out.println(money);
    }
}

第二十三题:拼接打印问题

package pratice;

public class 拼接打印 {
    public static void main(String[] args) {
        String name="倪静";
        int year=20;
        double high=165.25;
        System.out.println("姓名:"+name+",年龄"+year+",身高"+high);
    }
}

第二十四题:水仙数问题

package pratice;
import java.util.Scanner;

/*
练习题:打印水仙花数
水仙花数:是指一个三位数,其各位数字立方和等于该数字本身
例如:153就是一个水仙花数,因为153 = 1³ + 5³ + 3³
 */
public class 水仙花数问题 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数");
        int n=scanner.nextInt();
        int sum=0;
        while (n!=0){
            int x=n%10;
            n=n/10;
             sum=sum+x*x*x;
      
        }
        System.out.println(sum);
       
        }
    }

第二十五题:加减乘除运算问题

package pratice;
public class 加减乘除运算 {
    public static void main(String[] args) {
        add(3,4);
        sub(2,4);
        add(3.2,5.4);
    }
    public static void add(int a,int b){
        int sum;
        sum=a+b;
        System.out.println(sum);
    }
    public static void sub(int a,int b){
        int sum;
        if(a>b){
            sum=a-b;
        }else {
            sum=b-a;
        }
        System.out.println(sum);
    }
    public static void add(double a,double b){
        double sum;
        sum=a*b;
        System.out.println(sum);
    }
}

第二十六题:顺序数组打乱输出问题

package pratice;

import java.util.Arrays;
import java.util.Random;

/*
练习题:生成一个顺序数组,将这个数组的元素打乱顺序后输出
 */
public class shuffleArray {
    public static void main(String[] args) {
        int[]a=f();
        for (int i=0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println("\n");
        shuffle(a);
        System.out.println(Arrays.toString(a));
    }
    public static int[] f(){
        int[]a=new int[6];
        for (int i=0;i< a.length;i++){
            a[i]=i+1;
        }
        return a;
    }
    public static void shuffle(int[] a){
        for (int i=0;i<a.length;i++){
            int j=new Random().nextInt(a.length);
            int t=a[i];
            a[i]=a[j];
            a[j]=t;

        }
    }
}

第二十七题:斐波那契数列问题

用循环实现

package 算法设计与分析;
import java.util.Scanner;
public class 斐波那契数列问题 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一共有n个数");
        int n=scanner.nextInt();
        int num1=0;
        int num2=1;
        int numn=1;
        int sum=1;
        for(int i=3;i<=n;i++){
            numn=num1+num2;
            num1=num2;
            num2=numn;
            sum+=numn;
        }
        System.out.println("第n个数为"+numn);
        System.out.println("前n项和为"+sum);
    }
}

用递归来实现

package 算法设计与分析;

import java.util.Scanner;

public class 斐波那契数列2 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一共有n个数");
        int n=scanner.nextInt();
        int A=Recursion(n);
        System.out.println("第"+n+"项A为"+A);
        int sum=0;
        for (int i=1;i<=n;i++){
            sum+=Recursion(i);
        }
       System.out.println("前n项和为"+sum);
    }
        public static int Recursion(int n){

            if(n==1){
                return 0;
            }

            if(n==2){
                return 1;
            }
            return Recursion(n-1)+Recursion(n-2);
        }
}

第二十八题:猴子摘桃问题

package 算法设计与分析;
/*一个人摘了一些桃子,第一天卖掉了一半,又吃了一个,第二天卖掉了一半,又吃了一个,以后天天都是如此处理,到第n天发现桃子只剩下一个桃子,n是参数,返回值是一共摘的桃子数。*/
import java.util.Scanner;
public class 卖桃 {
    //最后一天是2,倒数第二天应为4,倒数第三天应为10,总结应满足公式number=(number+1)*2
        public static void main(String[] args) {
            Scanner input=new Scanner(System.in);
            System.out.println("请输入天数");
            int n= input.nextInt();
            int number=1;
            for(int i=2;i<=n;i++)
            {
                number=(number+1)*2;
                //从最后一天往前推,假设猴子上一天没吃那个多的桃子,
                //那么前一天的桃子数量就应该是今天的2倍。
            }
            System.out.println("猴子第一天摘了"+number+"桃子");
        }
    }



第二十九题:手机选号优惠问题

package pratice;

import java.util.Scanner;

/*
练习题: 手机选号:根据用户输入的手机号来确认用户实际支付的价格
如果尾数为8,需支付办卡费50元
如果尾数为4,需支付办卡费用0元
如果是其他尾号,需支付办卡费用20元
 */
public class 手机选号问题 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的手机号码");
        String str = scanner.nextLine();
        tel(str);
        if (str.length() != 11) {
            System.out.println("你输入的号码有错,请从新输入一个11位数的号码");
            return;
        }
    }
    public static void tel(String str){
            if(str.charAt(10)=='8'){
                int price=50;
                System.out.println("需要支付办卡费用为"+price+"元");
            } if(str.charAt(10)=='4'){
                System.out.println("不需要支付办卡费用");

            }if(str.charAt(10)!='8'&&str.charAt(10)!='4'){
                int price=20;
                System.out.println("需要支付办卡费用"+price+"元");
            }
        }
    }

第三十题:将字符串中的小写字母转化成大写字母问题

package pratice;

public class 字母大小写转换 {
    public static void main(String[] args) {
        String  str1="";
         String str="abDefGFcd";
        System.out.println("转换前的序列"+str);
        for (int i=0;i<str.length();i++){

            System.out.print("转换前:"+str.charAt(i)+" ");
            char ch=str.charAt(i);
            if(ch>='a'&&ch<='z'){
                ch=(char)((int)ch-32);
            }
            System.out.println("转换后"+ch);
            str1+=ch;
        }
        System.out.println("转换后的序列:"+str1);
    }
}

猜你喜欢

转载自blog.csdn.net/m0_55749088/article/details/125046921