夯实Java基础(二)

一,输入输出练习

1、输出乘法口诀表

public class MultiplicationTable {
    // 乘法表
    public static void main(String[] args) {
        for(int row = 1;row<=9;row++){
            for(int col=1;col<=row;col++){
                System.out.print(col+"*"+row+"="+row*col+"\t");
            }
            System.out.println();
        }
    }
}

2、输出一个整数的每一位

import java.util.Scanner;

public class PrintNum {
    public static void print(int num){
        // 将传入的整数转化为字符串
        String string = String.valueOf(num);
        // 将字符串转化为字符数组
        char[] data = string.toCharArray();
        // 利用for语句打印每一位
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i]+" ");
        }
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int num = scanner.nextInt();
        print(num);
    }
}

3、编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序

import java.util.Scanner;

public class Login {
    /*
        编写代码模拟三次密码输入的场景。
        最多能输入三次密码,密码正确,提示“登录成功”,
        密码错误, 可以重新输入,最多输入三次。
        三次均错,则提示退出程序
     */
    public static void main(String[] args) {
        String password = "admin";
        Scanner scanner =new Scanner(System.in);
        int step = 3;
        while(step!=0){
            String string = scanner.nextLine();
            if(string.equals(password)){
                System.out.println("登陆成功");
                break;
            }else{
                System.out.println("密码错误,请重新登陆!");
                step--;
            }
        }
        System.exit(1);
    }
}

4、获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列

import java.util.Scanner;

public class BinaryNum {
    /**
        获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        System.out.println(Integer.toBinaryString(num));
        // 打印偶数
        System.out.println("偶数序列:");
        for (int i = 31; i >=1; i-=2) {
            System.out.print(((num>>i)&1)+" ");
        }
        System.out.println();
        System.out.println("奇数序列:");
        // 打印奇数
        for (int i = 30;i>=0; i-=2){
            System.out.print(((num>>i)&1)+" ");
        }
    }
}

二、方法的创建和应用

1、创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3。

​ 要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算。

import java.util.Scanner;

public class MaxNum {
    // 返回两个数字中最大的值
    public static int max2(int a,int b){
        return a > b ? a : b;
    }
    // 返回三个数字中的最大的值
    public static int max3(int a,int b,int c){
        int max1 = max2(a,b);
        int max2 = max2(max1,c);
        return max2;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();
        System.out.println("a,b中的最大值为:"+max2(a,b));
        System.out.println("a,b,c中的最大值为:"+max3(a,b,c));
    }
}

2、调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。

import java.util.Arrays;

public class Adjustment {
    /**
     * 调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。
     * @param args
     */
    public static int[] adjust(int[] arr){
        int[] result = arr;
        // 初始下标
        int start = 0;
        // 结尾下标
        int end = arr.length-1;
        while(start<end){
            // 从前往后找偶数
            while(start<end&&result[start]%2 != 0){
                start ++;
            }
            // 从后往前找奇数
            while(start<end && result[end]%2 == 0){
                end --;
            }
            int temp = result[start];
            result[start] = result[end];
            result[end] = temp;
        }
        return result;
    }
    public static void main(String[] args) {
        int[] arr= {1,2,3,4,5,6,7,8};
        int[] result = adjust(arr);
        System.out.println(Arrays.toString(result));
    }
}

3、求 N 的阶乘 。

import java.util.Scanner;

public class Factorial {
    public static int factor(int num){
        int result = 1;
        for (int i = 1; i <= num; i++) {
            result *= i;
        }
        return result;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        System.out.println(factor(num));
    }
}

3、求1!+2!+3!+4!+…+n!的和

import java.util.Scanner;

public class Factorial {
    // 阶乘
    public static int factor(int num){
        int result = 1;
        for (int i = 1; i <= num; i++) {
            result *= i;
        }
        return result;
    }
    // 求1!+2!+3!+4!+........+n!的和
    public static int factorSum(int n){
        int result = 0;
        for(int i = 1;i<=n;i++){
            result+=factor(i);
        }
        return result;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        System.out.println(factorSum(num));
    }
}

4、求斐波那契数列的第n项。(迭代实现)

import java.util.Scanner;

public class facbonacci {
    public static int fac(int n){
        if(n == 1 || n == 2){
            return 1;
        }
        return fac(n-1)+fac(n-2);
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        System.out.println(fac(num));
    }
}

5、有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。

public class OblyOne {
    public static int onlyOne(int[] arr){
        int result = arr[0];
        // 利用异或运算来找出其中的单独的数字,n^n = 0 n^n^n = n
        for(int i = 1;i < arr.length; i++){
            result = result^arr[i];
        }
        return result;
    }
    public static void main(String[] args) {
        int[] arr = {1,2,3,3,2,4,6,6,1};
        System.out.println(onlyOne(arr));
    }
}
发布了65 篇原创文章 · 获赞 39 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44002167/article/details/103768581
今日推荐