Java 启程题

前言

1.我自己学过c语言后学Java的敲的基础编程题,会持续更新更多!!!
2.有些题有更简便的方法,可在评论区提供分享,共同进步。
3.如果需要无注释版本评论区说一声(我自己的注释可能有点难以理解hhhh)
4.------------基础题完后,会持续更新一些 面向对象的题目
5.其中的题:有来自课本,自己去其他博客中找的,如有侵权请告知,立删!
代码大部分是自己敲的,少部分借鉴其他博主的。

一、基础题

1.1: 判断闰年

(解题思路:判断是否满足闰年条件即可)

//判断是否是闰年
import java.util.Scanner;

public class JudgeRunNian {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);

        while(true) {
            System.out.print("请输入需要判断的年份:");
            int a = s.nextInt();
            if (a % 4 == 0 && a % 100 != 0)
                System.out.println(a + "这个年份为闰年");
            else
                System.out.println(a + "这个年份不是闰年");

        }
    }
}

1.2 :求斐波那契数列的前40项之和

(解题思路:从第三项开始,后每一项等于前两项之和)

public class Fpnq {
    public static void main(String[] args) {
        int f1=1,f2=2;
        int sum=f1+f2;
        int f3;
        for (int i=1;i<=4;i++){
            f3=f1+f2;
            f1=f2;
            f2=f3;
            sum+=f3;
        }
        System.out.println("斐波那契数列的前40项和为:"+sum);
    }
}


1.3:输入三个数:并按小到大排序输出

(解题思路:分别取出最大值,最小值,最后减去这两个,即为中间值)

import java.util.Arrays;
import java.util.Scanner;

public class Enter_three {
    public static void main(String[] args) {
        System.out.println("输入三个数:");
        sort();
    }
    // 定义一个三个数排序方法,定义三个数类型定义为double类型为了适应跟多情况
    public static void sort() {
        Scanner scanner = new Scanner(System.in);
        double x = scanner.nextDouble();
        double y = scanner.nextDouble();
        double z = scanner.nextDouble();

        //获取最大值
        double max = (x > y) ? x : y;
        max = (max > z) ? max : z;

        //获取最小值
        double min = (x < y) ? x : y;
        min = (min < z) ? min : z;

        //获取中间值
        double mid = x + z + y - max - min;
        System.out.println("由小到大排序:");
        System.out.println(min + "<" + mid + "<" + max);

    }
}

1.4:输出9x9乘法口诀

public class Cf9_9 {
    public static void main(String[] args) {
        int i,j;
        for(i=1;i<=9;i++) {
            for (j = 1; j <= 9; j++)
                System.out.print(i + "*" + j + "=" + i * j+"  ");
            System.out.println();
        }
    }
}

1.5:求两数的最小公倍数和最大公约数

/*
有以下比较方便的公式:x*y=最小公倍数*最大公约数
*/

import java.util.Scanner;

public class MaxAndMin {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        System.out.println("请输入两个整数:");
        int a=s.nextInt();
        int b=s.nextInt();
        System.out.println(a+","+b+"最大公约数为:"+Max(a,b));
        System.out.println(a+","+b+"最小公倍数为:"+a*b/Max(a,b));
    }
    //最大公约数方法(),相互比较,一直减到相等就是最大公约数
    public static int Max(int a,int b){
        if(a==b)
            return a;
        while(a!=b){
            if(a>b)
                a=a-b;
            else
                b=b-a;
        }
        return a;
    }
}

1.6:递归求n的阶乘

import java.util.Scanner;

public class Test8_NJC {
    public static void main(String[] args) {
        int n;
        System.out.print("请输入你要求的数n的阶乘:");
        Scanner scanner=new Scanner(System.in);
        n=scanner.nextInt();
        System.out.println(n+"的阶乘为:"+fun(n));

    }
    public static int fun(int n){
        int temp=1;
        if (n==1)
            temp=1;
        else
            temp=n*fun(n-1);
        return temp;
    }
}

1.7:输入数据存入数组,将其逆序存放,然后再输出。如,存入123456789,在原数组中完成逆序存放,987654321,输出

解题思路:1.首元素与尾元素交换存储 2.从头开始逐一交换 3.分奇偶个数情况

import java.util.Scanner;

public class Test10 {
    public static void main(String[] args) {
        System.out.println("请输入数据:");
        String s=new Scanner(System.in).nextLine();
        char[]a=s.toCharArray();// 将输入的字符串转化为字符数组
        int i,j;
        // 当输入长度为偶数时候
        if (a.length%2==0){
            j=a.length-1; //从尾开始依次与前元素交换
            for ( i=0;i<a.length/2;i++){
                for (;j>=a.length/2;){
                    char temp=a[i];
                    System.out.println("i="+i+"j="+j);
                    a[i]=a[j];
                    a[j]=temp;
                    j--;
                    break; //a[i]只执行一次交换即可,所以要提前结束j循环,进行下一次a[i]值的交换
                }
            }
        }
        //当输入长度为奇数时候
         if (a.length%2==1){
            j=a.length-1;
            for(i=0;i<a.length/2;i++){
                for (;j>a.length/2;){
                    char temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                    j--;
                    break;
                }
            }
        }
        System.out.println("逆序存储");
        for (i=0;i<a.length;i++){
            System.out.print(a[i]);
        }


    }

}

1.8输入十进制数字,以八进制/二进制/十六进制输出

(该方法似乎不是太符合题意,有其他方法可,提供评论区互相交流)

/*int的包装类 Integer类中的方法:(其他基本数据类型的包装类大同小异)
1.toBinaryString(int i)以二进制方式放回一串字符
2.toHexString(int i)  以十六进制形式返回一串字符
3,toOctalString(int i)  以八进制形式返回一串字符
*/

import java.util.Scanner;

public class Test11 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n;
        int a=6,b=2;
        String s=String.valueOf(a);
        System.out.println("请输入你要转化的值n:");
        n=scanner.nextInt();
        System.out.println("以二进制输出:"+Integer.parseInt(Integer.toBinaryString(n)));
        System.out.println("以十六进制输出:"+Integer.toHexString(n));
        System.out.println("以八进制输出:"+Integer.toOctalString(n));
    }
}

1.9// 将数组内元素往后移动m个单位

import java.util.Scanner;

public class Test13 {
    public static void main(String[] args) {
        int[]A=new int[20];
        int n;
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入元素要移动的m个单位:");
        int m=scanner.nextInt();
        System.out.print("请输入想要的数组起始要多少个元素:");
        n=scanner.nextInt();
        System.out.println("请输入前"+n+"个元素");
        for(int i=0;i<n;i++)
            A[i]=scanner.nextInt();
        System.out.println("移动之前:");
        for(int i=0;i<A.length;i++)
            System.out.println("A["+i+"]"+"="+A[i]);


        for(int temp=n-1;temp>=0;temp--) {
            A[temp + m] = A[temp];
            A[temp]=0;
        }
        System.out.println("\n----------------");
        System.out.println("移动之后:");
        for(int i=0;i<A.length;i++)
            System.out.println("A["+i+"]"+"="+A[i]);

    }
}

2.0:一个偶数必然能由两个素数之和形成,输入一个偶数,输出组成该偶数素数

(解题思路:)

import java.util.Scanner;

public class Test14 {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        System.out.println("请输入一个偶数n:");
        int n;
        n=s.nextInt();
        int i=0,j=0;
        for(i=2;i<=n;i++) {
            for (j = 2; j <= n/2; j++) {  // n/2是为了不输出重复组合
                if (Sushu(i)+Sushu(j)==n)
                    System.out.println(i+", "+j);

            }
        }
    }
    // 定义一个判断素数,并返回素数的方法
    public static int Sushu(int n){
        int temp=0;
        int i;
        for (i=2;i<=n;i++) {

            if (n % i == 0)
                break;
        }
        if(i==n)
            temp=n;
            return temp;
    }
}

2.0 :输出3 x 3 矩阵,并求其对角线之和

import java.util.Scanner;

public class Test15_3x3 {
    public static void main(String[] args) {
        int i,j;
        int[][]A=new int[3][3];
        Scanner scanner=new Scanner(System.in);

        //给矩阵赋值:
        for(i=0;i< A.length;i++)
            for (j=0;j<A.length;j++){
                System.out.println("输入第"+(i+1)+"行的第"+(j+1)+"个元素的值:");
                A[i][j]=scanner.nextInt();
            }
        //打印出矩阵:
        System.out.println("\n您的矩阵如下:");
        for(i=0;i< A.length;i++) {
            for (j = 0; j < A.length; j++){
                System.out.printf("%-3d",A[i][j]);
            }
            System.out.println("\n");
        }

        //输出对角线之和
        int sum1=0;
        System.out.println("\n主对角线和如下:");
        for(i=0;i<A.length;i++) {
            for (j = 0; j < A.length; j++) {
                if (i == j) {
                    sum1+=A[i][j];
                    System.out.printf("%-3d", A[i][j]);
                }
            }
        }
        System.out.println("="+sum1);

        int sum2=A[0][2]+A[1][1]+A[2][0];
        System.out.println("\n副对角线和如下:");
        System.out.println(A[0][2]+"  "+A[1][1]+"  "+A[2][0]+"  ="+sum2);
    }
}

2.1 :输出杨辉三角前十行

public class Test_9_yhsj {
    public static void main(String[] args) {
        int i,j;
        int[][]a=new int[10][10];
        //这个for循环主要是给每行第一个元素和要输出行的最后一个元素赋值为:1
        for (i=0;i<a.length;i++){
            a[i][0]=1;
            a[i][i]=1;
        }

        //给第三行以及后面行从第二个元素开始赋值
        for(i=2;i<a.length;i++)
            for(j=1;j<a.length;j++){
                a[i][j]=a[i-1][j]+a[i-1][j-1];
            }

        //变量输出元素,元素输出的个数和行数有关
        for(i=0;i<a.length;i++) {
            for (j = 0; j <= i; j++) {
                System.out.printf("%-5d",a[i][j]);
            }
            System.out.println("\n");
        }

    }
}

2.2:一个数列为:2/1、3/2、5/3 …求该数列的前20项之和

package Tsk;

public class Test16 {
    public static void main(String[] args) {
        double m=1.0,z=2.0,temp,temp1;
        double sum=0.0;
        for(int i=1;i<=20;i++){
            temp=z/m;
            temp1=z;
            z=z+m;
            m=temp1;
            sum+=temp;
        }
        System.out.println("前20项之和为:"+sum);
    }
}

2.3:输入日期 ,输出该天为该年的第多少天

public class YearMouthDay {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int year,mouth,day,sum=0;
        System.out.print("请输入year,mouth,day:");
        year=scanner.nextInt();
        mouth=scanner.nextInt();
        day=scanner.nextInt();
        switch (mouth){
            case 12:sum+=30;
            case 11:sum+=31;
            case 10:sum+=30;
            case 9: sum+=31;
            case 8: sum+=31;
            case 7: sum+=30;
            case 6: sum+=31;
            case 5: sum+=30;
            case 4: sum+=31;
            case 3: sum+=28;
            case 2: sum+=31;
            case 1: sum+=day;

        }
        if (year%4==0&&year%100!=0)
            sum+=1;
        System.out.println(year+"年"+mouth+"月"+day+"日"+":"+"今天是该年的第"+sum+"天");


    }

}

2.4:输出一个正整数因式分解,例如:12=2* 2 *3

import java.util.Scanner;

//题目1:输出一个正整数因式分解:
//例如:12=2*2*3
public class Basics_01 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个正整数n:");
        int n=scanner.nextInt();
        int temp=n; //定义一个暂时值temp 用于循环,(不能用n进行循环,n每找到一次因子都要除)
        System.out.print(n+"=");
        for (int i=2;i<temp;i++){
            if (i==n){
                System.out.print(n);
                break;
            }
            if (n%i==0){
                n=n/i;
                System.out.print(i+"*");
                i--; //令i继续为 1 ,之和的i++后 i==2,据需判断 2这个因素是不是因子
            }

        }
    }
}

2.5:买饮料问题:一瓶饮料3块,一个瓶子可退回1块钱,20块最多买多少瓶

import java.util.Scanner;

public class Basics_02 {
    public static void main(String[] args) {
        int countp=0,tempMoney=0,sumcountp=0; //countp 统计剩余的钱可以买的瓶的数量,sumcountp统计全部瓶数,tempMoney余钱
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入你的钱:");
        int Money=scanner.nextInt();
        while(Money/3!=0){ //除少于3 就买不起了!
            countp=Money/3;  //零时瓶数
            sumcountp+=countp; // 累加瓶数
            tempMoney=countp+Money%3; //瓶数就可以抵钱+余钱
            Money=tempMoney; //重新赋值就行判断循环

        }
        System.out.println("最多可以买"+sumcountp+"瓶");

    }
}

2.6:1 2 3 4 能组成多少个不相同的三位数

public class Basics_03 {
    public static void main(String[] args) {
        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)
                        count++;
                }
        System.out.println("一共可以组成"+count+"个不同的三位数");
    }
}

2.6:自由落体第n次反弹回来所经历过的路程,以及第n次反弹的高度(递归做法)

import java.util.Scanner;

public class Basics_04 {
    double begheight; // 定义一个成员变量,为自由落体开始的高度

    // 递归求第n次弹回的高度
    public double FTheight(int n){
        if (n==1)
            return this.begheight/2; //弹回高度为下降时候的一半
        return FTheight(n-1)/2; // 递归求第n次弹回的高度
    }

    //定义一个计算路程方法: 每次弹回后的路程都等于,弹回高度的三倍
    public double LC(int n){
        int sum=0;
        for (int i=1;i<=n;i++)
            sum+=FTheight(i)*3;
        return sum;
    }

    public static void main(String[] args) {
        int n;
        Scanner scanner=new Scanner(System.in);
        Basics_04 height=new Basics_04();
        System.out.print("输入起始高度:");
        height.begheight=scanner.nextDouble();
        System.out.print("输入要计算的第n次弹回:");
        n=scanner.nextInt();
        System.out.println("第"+n+"次弹回高度为"+height.FTheight(n)+"\n"+"第"+n+"次弹回的总路程为"+height.LC(n));
    }
}

2.7:输出一个范围内的自守数,自首数 :25 的平方 625 尾部相同。

import java.util.Scanner;

public class Basics_05 {

    // 定义一个判断自守数的方法
    public static boolean judge(int n){
        String s=new Integer(n).toString(); //将整型变量n转为字符串型
        char[]sz=s.toCharArray(); // 再将字符串型转为字符数组型

        int nf=(int)Math.pow((double)(n),2); // 对需要判断的整型变量n 求平方
        String s2=new Integer(nf).toString();// 以下同理
        char[]sz2=s2.toCharArray();
        //for循环长度小的数组从头开始遍历,长度大的则要从小数组最后一个元素的后一个元素开始,然后进行逐一对比
        for (int i=0,j=sz.length-1;i<sz.length;i++,j++){
            if (sz[i]!=sz2[j])
                return false ; //当中有一个字符不一样就返回false
        }
        return true;

    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n;
        System.out.println("请输入一个整数范围最大值n");
        n=scanner.nextInt();
        for (int j=1;j<=n;j++){
            if (judge(j))
                System.out.println(j+"是一个自守数");

        }



    }
}

2.8:蜗牛爬井问题:蜗牛白天爬5米, 晚上下滑1.5 米,求n米的井要爬多少天。

import java.util.Scanner;

public class Basics_06 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入井深(m):");
        Double wellDepth = input.nextDouble();


        int day = 1;    //蜗牛爬出井需要的天数,无论井深是多少,天数最少是1天。
        double sum = 0; //蜗牛爬过的距离
        while (true) {  // 定义一个死循环,让蜗牛爬的路程一直加,并且计算天数
            sum += 5;
            if (sum >= wellDepth)
                break;
            sum -= 3.5;
            day ++;
        }
        System.out.print("蜗牛需要 " + day +"  天才能从井底到爬出来。");

    }
}

2.9:递归求n阶乘

import java.util.Scanner;

public class Basics_07 {
    public static int DG(int n){
        int temp=1;
        if (n==1)
            return 1;
        else
            temp=n*DG(n-1); // 此步数关键
        return temp;
    }
    public static void main(String[] args) {
        int n;
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入需要求阶乘的数n:");
        n=scanner.nextInt();
        System.out.println(n+"的阶乘数为"+DG(n));

    }
}

3.0:体彩中有一项是双色球,要求在1-33号共33个红色球里选出6个,1-16号共16个蓝色球中选出一个作为中奖号码,请实现这个需求。

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

public class Basics_08 {
    public static void main(String[] args) {
        int[]r=FuZhi(33);// 创建红球数组,并调用FuZhi(int n)进行赋值
        int[]b=FuZhi(16);// 创建蓝球数组,并调用FuZhi(int n)进行赋值

        int[]sred=SeleRed(r);// 调用SeleRed(int []a )方法返回随机红球的6个元素的数组
        System.out.println("红球的中奖号码为:"); //遍历输出红球中奖号数
        for (int i=0;i<sred.length;i++){
            System.out.println(sred[i]);
        }
        System.out.println("篮球中奖号码为:"+SeleBlue(b));// 输出篮球号码数

    }
    //定义一个赋值给色球数组的方法:FuZhi(int n) n为色球最大数好
    public static int[] FuZhi(int n){
        int[]A=new int[n];
        for (int i=0;i<A.length;i++)
            A[i]=i+1;
        return A;
    }

    // 定义选择红求的方法SeleRed(int [] a)
    public static int[] SeleRed(int[] a){
        for (int i=0;i<6;i++){
            int j;
            j=new Random().nextInt(a.length-i)+i;//nextInt(5)返回随机数范围为:[0-5)整数
                                                   //nextInt(5)+1 范围则变为 [1-5]
            //然后交换值
            int t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
        return Arrays.copyOf(a,6);//返回打乱号码的a数组的前六个元素
    }

    // 由于蓝球只需要一个号码,则随机返回一个号码数即可
    public static int SeleBlue(int[] b){
        return b[new Random().nextInt(b.length)]; // 直接随机返回返回蓝色球一个数
    }

}

3.1: 生兔子问题: 有一对兔子在出生第三个月后生下一对兔子,之后每一个月都生下一对兔子,


import java.util.Scanner;

//题目: 生兔子问题: 有一对兔子在出生第三个月后生下一对兔子,之后每一个月都生下一对兔子,
//第某月的兔子数为多少。
public class Basics_09 {
    public static void main(String[] args) {
        int mouth;
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入某月");
        mouth=scanner.nextInt();
        System.out.println("第"+mouth+"月有"+getsum(mouth)+"对兔子。");

    }

    //递归求某月兔子数量
    // 由题意知:1,2月有1 对,3月开始后一个月的数量等于前两个月数量之和
    public static int getsum(int mouth){
        if (mouth==1||mouth==2)
            return 1;
        else return getsum(mouth-1)+getsum(mouth-2);
    }
}

3.1: 随机生成两个数组,要求将两数组,归并为一个数组,并且顺序由大到小

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

//题目: 随机生成两个数组,要求将两数组,归并为一个数组,并且顺序由大到小
public class Basics_10 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入第一个数组元素个数:");
        int n1=scanner.nextInt();
        int[]A=creat(n1);

        System.out.println("请输入第二个数组元素个数:");
        int n2=scanner.nextInt();
        int[]B=creat(n2);

        int[]C=merge(A,B);
        Arrays.sort(C);
        for (int i=0;i<C.length;i++)
            System.out.println(C[i]);
    }

    //定义一个随机创造数组的方法
    public static int[] creat(int n){
        int[] A;
        A=new int[n];
        for (int i=0;i<A.length;i++){
            A[i]=new Random().nextInt((int)Math.pow((double)n,(double)2 ));
        }
        return A;
    }

    //定义一个将两数组归并的方法
    public static int[] merge(int[]a,int[]b){
        int[]c;
        int temp=0;// temp值记录b数组下标
        c=new int[a.length+b.length];
        for (int i=0;i<c.length;i++){
            if (i<a.length){
                c[i]=a[i];
            }
            else{
                c[i]=b[temp];
                temp++;
            }
        }
        return c;
    }
}

3.2:猴子选大王,一共有15只猴子,按1~7依次报数,报7则淘汰,剩下最后的即为大王

//题目:猴子选大王,一共有15只猴子,按1~7依次报数,报7则淘汰,剩下最后的即为大王

public class Basics_11 {
    public static void main(String[] args) {
        boolean[]monkey=new boolean[15]; //定义boolean类型数组monkey
        for (int i=0;i<monkey.length;i++){ // 初始化全为true
            monkey[i]=true;
        }

        //二、定义需要用的变量
        int summonkey=15;  // begin未淘汰的猴子数
        int index=0; // 定义一个下标
        int number=0; //定义报数

        //循环淘汰
        while(summonkey>1){ //剩余数不大于1
            if (monkey[index]) //判断该猴子是否已经被淘汰
                number++;  //不淘汰则报数
            if (number==7){  // 报数为7则淘汰该猴子
                monkey[index]=false;
                number=0;// 报数重新置0
                summonkey--;
            }
            index++; // 下一只猴子
            if (index==15) // 如果下标等于15 置0,重新开始报数
                index=0;
        }

        //遍历判断未被淘汰的猴子即是猴王
        for (int i=0;i<monkey.length;i++){
            if (monkey[i])
                System.out.println("猴子王是第"+(i+1)+"个");
        }
    }
}

3.3:打印水仙花数 :条件,三位数的整数,各个位的数的立方之和等于本身

//打印水仙花数 :条件,三位数的整数,各个位的数的立方之和等于本身

public class Basics_12 {
    public static void main(String[] args) {
        for (int i=100;i<=1000;i++){
            if (judge(i))
                System.out.println(i+"是一个水仙花数");
        }

    }

    //定义一个判断水仙花数的方法
    public static boolean judge(int n){
        int sum=0;
        int temp=n;// 定义temp代替n去每次循环都去掉一位数
        while(temp!=0){
            sum+=(temp%10)*(temp%10)*(temp%10);
            temp=temp/10;
        }
        if (sum==n)
            return true;
        return false;
    }
}

3.4:封装百分制分数,和它对应的五档分数制

//题目  封装百分制分数,和它对应的五档分数制

// 测试类
public class Basics_13 {
    public static void main(String[] args) {
        Sore s1=new Sore(90);
        System.out.println(s1.toString());
    }
}


// 定义一个分数类,成员变量有 int sore, char level, 以及成员方法 stulevel(int s),以及重写toString()。
class Sore{
    int score;
    char level;

    //构造方法
    public Sore() {   //无参
    }

    public Sore(int score) { // 有参
        this.score = score;
        this.level=stulevel(score);
    }

    // 定义一个判断档次的方法
    private char stulevel(int s){
        char r = 0;
        switch(s/10) {
            case 10:case 9:
                r = 'A';break;
            case 8:case 7:
                r = 'B';break;
            case 6:
                r = 'C';break;
            case 5:case 4:case 3:case 2:
                r = 'D';break;
            case 1:case 0:
                r = 'E';break;
        }
        return r;
    }

    // 重写toString()
    public String toString() {
        return "Student Sore = " +
                + score +
                ", level is " + level;
    }
}

3.5: 输入一个邮箱,提取邮箱名字


import java.util.Scanner;
public class Basics_15 {
    public static void main(String[] args) {
        System.out.println("请输入邮箱:");
        String e=new Scanner(System.in).nextLine();
        System.out.println("名字为:"+Getname(e));

    }

    public static String Getname(String e){
        int i=e.indexOf('@'); // 用String类中的 indexOf()返回某个字符的下标
        System.out.println("下标为"+i);
        if (i==-1){
            return "输入邮箱有误";
        }
        String name=e.substring(0,i);// 用String类中的 substring(int beg,int end)方法截取字符串,截取不包括end下标元素
        return name;
    }
}


3.5(懒得打了hhhh)在这里插入图片描述

import java.util.Scanner;

public class Task_15 {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入一个金额:");//提示输入金额
        float cash= scan.nextFloat();// 输入金额,不定义为double类型是因为double类型精度太高不利于统计个数
        int y=0,j=0,wf=0,f=0;// 定义y来统计 1元的个数,j来统计 2角的个数, wf来统计 5分的个数, f来统计 1分的个数

        //统计1元个数
        if (cash>=1){while(cash>=1){  //首先判断现金是否大于 1元,大于则统计
            y++; //个数累加
            cash=(float) (cash-1.0); //每次循环都减掉 1元,直到小于1元,退出循环,继续这个循环下面语句
        }
        }
        System.out.println(cash); // 输出减完 1元值后的 cash(现金)
        System.out.println("1元  "+y+"个"); // 输出 1元的个数

        //统计2角的个数(与上同理)
        if(cash>=0.2){
            while(cash>0.2){
                j++;
                cash=(float)(cash-0.2);
            }
        }
        System.out.println(cash);
        System.out.println("2角  "+j+"个");

        //统计5分的个数(与上同理)
        if (cash>=0.05){
            while(cash>=0.05){
                wf++;
                cash=(float) (cash-0.05);
            }
        }
        System.out.println(cash);
        System.out.println("5分  "+wf+"个");

        //统计1分的个数(与上同理)
        if(cash>=0.01){
            while(cash>=0.01){
                f++;
                cash=(float) (cash-0.01);
            }
        }

        if(cash>0.005){  //四舍五入了(由于越算下去小数位越多,按正常金钱使用不会出现小数位过多的情况)
            f++;
        }
        System.out.println(cash);
        System.out.println("1分  "+f+"个");
    }
}


3.6:题目:1.输入年月,将输出出日历表(从1900.1.1开始计算总天数) 2.输出两日期相差多少天 3.输出后一个日期该天是星期几;

(本题我第一次做的时候也是感觉很难)

import java.util.Scanner;
/*
 * 1.输入年月,将输出出日历表(从1900.1.1开始计算总天数)
 * 2.输出两日期相差多少天
 * 3.输出后一个日期该天是星期几
 */
public class Task_14 {




    public static int sum1900(int year,int month) {
        int sum=0;
        for (int i = 1900; i < year; i++) {
            if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
                sum += 366;
            } else {
                sum += 365;
            }
        }

        for (int j = 1; j < month; j++) {
            if (j == 2) {
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                    sum += 29;
                } else {
                    sum += 28;
                }
            } else {
                if (j == 4 || j == 6 || j == 9 || j == 11) {
                    sum += 30;
                } else {
                    sum += 31;
                }
            }
        }
        return sum;
    }

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        System.out.println("请输入年份(小):");
        int year1=in.nextInt();
        System.out.println("请输入月份(小):");
        int month1=in.nextInt();
        System.out.println("请输日(小):");
        int day1= in.nextInt();
        System.out.println("请输入年份(大):");
        int year2=in.nextInt();
        System.out.println("请输入月份(大):");
        int month2=in.nextInt();
        System.out.println("请输日(大):");
        int day2= in.nextInt();
        int sumMouth=0;
        int sumsmall=sum1900(year1,month1)+day1; //两日期中小的 日期到 1900.1.1 的天数
        int sumbig=sum1900(year2,month2)+1;

        //该月有几天,
        if(month2==2) {
            if(year2%4==0&&year2%100!=0||year2%400==0){
                sumMouth=29;
            }else {
                sumMouth=28;
            }
        }else {
            if(month2==4||month2==6||month2==9||month2==11){
                sumMouth=30;
            }else {
                sumMouth=31;
            }
        }


        int temp=sumbig;
        int wekday=temp%7;
        System.out.println("后一个日期的日历如下:");
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        int count=0;
        for(int i=1;i<=wekday;i++){
            System.out.print("\t");
            count++;
        }
        for(int i=1;i<=sumMouth;i++) {
            if(temp%7==6) {
                System.out.print(i+"\n");
            }else {
                System.out.print(i+"\t");
            }
            temp++;
        }

        int sumbig2=sumbig+day2-1;// sumbig2 为后一个日期加上当天数的,到1900.1.1的相差天数的总和  :注 加上当天日期就不用加1了

        System.out.println("\n---------------------"+sumsmall);
        System.out.println("\n--------------------------------------"+sumbig2);
        System.out.println("\n两日期相差"+(sumbig2-sumsmall));  // 两日期相差的天数

        System.out.println(count+"------------------------------");

        switch (sumbig2%7){
            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;
            default:System.out.println("今天星期日");break;
        }

    }

}

到此基础题就暂时结束啦!当做到新的题我会继续更新的!
之后会更新面向对象的基础题!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值