Java2EE基础练习_chapter02流程控制

简介: Java2EE基础练习_chapter02流程控制

题目01

假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入

一个两位数,然后按照下面的规则判定用户是否能赢。

1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。

2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。

3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。

4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。

5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。

package com.jerry.exer;
import java.util.Scanner;
/**
 * @author 金阳
 * @description
 * @create 2022-09-19 19:57
 */
public class Exer2 {
    public static void main(String[] args) {
        /*假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入
        一个两位数,然后按照下面的规则判定用户是否能赢。
        1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
        2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
        3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
        4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
        5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。*/
//        System.out.println(Math.random()*90+10);
        int random = (int) (Math.random() * 90 + 10);//一定可以产生一个随机的两位数,并且最小是10
        System.out.println("random=" + random);
        int randomShi = random / 10;
        System.out.println("randomShi=" + randomShi);
        int randomGe = random % 10;
        System.out.println("randomGe=" + randomGe);
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个两位数:");
        int input = scanner.nextInt();
        System.out.println("您输入的两位数为:" + input);
        int inputShi = input / 10;
        System.out.println("inputShi=" + inputShi);
        int inputGe = input % 10;
        System.out.println("inputGe=" + inputGe);
        if (random == input) {
            System.out.println("奖金10 000美元");
        }
        else if (inputShi == randomGe && inputGe == randomShi) {
            System.out.println("奖金 3 000美元");
        }
        else if (inputShi == randomShi || inputGe == randomGe) {
            System.out.println("奖金1 000美元");
        }
        else if (inputShi == randomGe || inputGe == randomShi) {
            System.out.println("奖金500美元");
        } else {
            System.out.println("彩票作废");
        }
    }
}

题目02

假如今天是周二,用户随机输入一个数num,判断过了num天以后是周几?

package com.jerry.exer;
import java.util.Scanner;
/**
 * @author 金阳
 * @description
 * @create 2022-09-19 20:19
 */
public class Exer3 {
    public static void main(String[] args) {
//        char x = 'x';
//        int i = 10;
//        System.out.println(true? x : i);//65+
//        System.out.println(true? 'x' : 10);//x
        //今天是周二,100天以后是周几?
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num = scanner.nextInt();
        int var = num % 7;
        int today  = 2;
        int tomorrow = today + var;
        switch (tomorrow){
            case 1:
                System.out.println("今天是周一");
                break;
            case 2:
                System.out.println("今天是周2");
                break;
            case 3:
                System.out.println("今天是周3");
                break;
            case 4:
                System.out.println("今天是周4");
                break;
            case 5:
                System.out.println("今天是周5");
                break;
            case 6:
                System.out.println("今天是周6");
                break;
            case 7:
                System.out.println("今天是周7");
                break;
            default:
                System.out.println("今天是周一");
        }
    }
}

题目03

自增运算

package com.jerry.exer;
/**
 * @author 金阳
 * @description
 * @create 2022-09-19 20:44
 */
public class Exer4 {
    public static void main(String[] args) {
        int a = 23;
        int b = 12;
        System.out.println(a + "+" + b + "=" + (a + b));
        int sum = a + b;
        System.out.println(a + "+" + b + "=" + sum);
        int sub = a - b;
        //System.out.println(a + "-" + b + "=" + a-b);//错误,原因是a + "-" + b + "=" + a的结果是字符串,字符串不能进行减法
        System.out.println(a + "-" + b + "=" + (a - b));
        System.out.println(a + "-" + b + "=" + sub);
        int mul = a * b;
        System.out.println(a + "*" + b + "=" + a * b);
        System.out.println(a + "*" + b + "=" + mul);
        //整数相除,只保留整数部分
        int div = a / b;
        System.out.println(a + "/" + b + "=" + a / b);
        System.out.println(a + "/" + b + "=" + div);
        double d = (double) a / b;//先把a的类型进行转换,转换成double类型,然后再和b相除
        System.out.println(a + "/" + b + "=" + d);
        int yu = a % b;
        System.out.println(a + "%" + b + "=" + yu);
        System.out.println("------------------特殊的取模----------------------");
        System.out.println(5 % 2);//1
        System.out.println(-5 % -2);//-1
        System.out.println(-5 % 2);//-1
        System.out.println(5 % -2);//1
        System.out.println("------------------负号----------------------");
        int num1 = 12;
        int num2 = -num1;
        System.out.println("num2=" + num2);
        System.out.println("------------------自增----------------------");
        int i = 0;
        System.out.println("自增之前i=" + i);
        i++;
        System.out.println("自增第一次之后i=" + i);
        ++i;
        System.out.println("自增第二次之后i=" + i);
        int j = ++i;//把i自增1,然后结果赋值给j,或者说,先算++i,然后再赋值
        System.out.println("自增第三次之后i=" + i);
        System.out.println("j=" + j);
        int k = i++;//先算赋值,把i的值赋值给k,i原来是3,把3赋值给k,然后i在自增1,i变成4
        System.out.println("自增第四次之后i=" + i);
        System.out.println("k=" + k);
        //面试题:陷阱题
        i = i++;//先赋值,把i原来的值重新赋值给i,不变,然后i自增,但是这个自增后的值没有在放回变量i的位置
        System.out.println("自增第五次之后i=" + i);
    }
}

题目04

考查运算符的优先级

package com.jerry.exer;
/**
 * @author 金阳
 * @description
 * @create 2022-09-19 20:53
 */
public class Exer5 {
    //考查运算符的优先级
    public static void main(String[] args) {
        int x = 0, y = 1;
        if (++x == y-- & x++ == 1 || --y == 0)
            System.out.println("x=" + x + ",y=" + y);   //x = 2,y = 0;
        else
            System.out.println("y=" + y + ",x=" + x);
    }
}

题目05

如何求一个0~255范围内的整数的十六进制值,例如60的十六进制表示形式3C

package com.jerry.exer;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-20 9:21
 */
public class Exer6 {
    public static void main(String[] args) {
        //如何求一个0~255范围内的整数的十六进制值,例如60的十六进制表示形式3C
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个0~255之间的整数:");
        int num = scanner.nextInt();
        //方式一:自动实现
//        String hexString = Integer.toHexString(num).toUpperCase(Locale.ROOT);
//        System.out.println(num + " 的十六进制是:" + hexString);
        //方式二:手动实现
        int i = num / 16;
        int j = num % 16;
        char c = 0;
        if (j == 10) {
            c = 'A';
        } else if (j == 11) {
            c = 'B';
        } else if (j == 12) {
            c = 'C';
        } else if (j == 13) {
            c = 'D';
        } else if (j == 14) {
            c = 'E';
        } else if (j == 15) {
            c = 'F';
        }
        System.out.println(num + " 的十六进制是:" + i + c);
    }
}

题目06

运算符的判断

package com.jerry.exer;
/**
 * @author jerry_jy
 * @create 2022-09-20 9:24
 */
public class Exer7 {
    public static void main(String[] args) {
//        int a = 3, b = 8;
//
//        int c = (a > b) ? a++ : b++;
//        System.out.println("a=" + a + "\tb=" + b + "\tc=" + c);  //3,9,8
//
//        int d = (a > b) ? ++a : ++b;
//        System.out.println("a=" + a + "\tb=" + b + "\td=" + d);  //3,8,9
//
//        int e = (a < b) ? a++ : b++;
//        System.out.println("a=" + a + "\tb=" + b + "\te=" + e);  //4,8,3
//
//        int f = (a < b) ? ++a : ++b;
//        System.out.println("a=" + a + "\tb=" + b + "\tf=" + f);  //3,8,4
//        short s1 = 1; s1 = s1 + 1;有什么错?
//        short s1 = 1; s1 += 1;有什么错
        short s1 = 1;
        s1 = (short) (s1 + 1);
    }
}

题目07

从键盘分别输入年、月、日,判断这一天是当年的第几天

package com.jerry.exer;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-20 9:41
 */
public class Exer9 {
//    从键盘分别输入年、月、日,判断这一天是当年的第几天
    public static void main(String[] args) {
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("请输入年:");
        int year = scanner1.nextInt();
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("请输入月:");
        int month = scanner2.nextInt();
        Scanner scanner3 = new Scanner(System.in);
        System.out.println("请输入日:");
        int day = scanner3.nextInt();
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            switch (month) {
                case 1:
                    System.out.println("这一天是当年的第" + day + "天");
                    break;
                case 2:
                    System.out.println("这一天是当年的第" + (day + 31) + "天");
                    break;
                case 3:
                    System.out.println("这一天是当年的第" + (day + 31 + 28) + "天");
                    break;
                case 4:
                    System.out.println("这一天是当年的第" + (day + 31 + 28 + 31) + "天");
                    break;
                case 5:
                    System.out.println("这一天是当年的第" + (day + 31 + 28 + 31 + 30) + "天");
                    break;
                case 6:
                    System.out.println("这一天是当年的第" + (day + 31 + 28 + 31 + 30 + 31) + "天");
                    break;
                case 7:
                    System.out.println("这一天是当年的第" + (day + 31 + 28 + 31 + 30 + 31 + 30) + "天");
                    break;
                case 8:
                    System.out.println("这一天是当年的第" + (day + 31 + 28 + 31 + 30 + 31 + 30 + 31) + "天");
                    break;
                case 9:
                    System.out.println("这一天是当年的第" + (day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31) + "天");
                    break;
                case 10:
                    System.out.println("这一天是当年的第" + (day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30) + "天");
                    break;
                case 11:
                    System.out.println("这一天是当年的第" + (day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31) + "天");
                    break;
                case 12:
                    System.out.println("这一天是当年的第" + (day + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30) + "天");
                    break;
            }
        }
    }
}

题目08

使用条件结构实现,如果用户名等于字符‘青’,密码等于数字‘123’,就输出“欢迎你,青”,否则就输出“对不起,你不是青”。

package com.jerry.exer;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-09-20 10:06
 */
public class Exer12 {
    //    使用条件结构实现,如果用户名等于字符‘青’,密码等于数字‘123’,就输出“欢迎你,青”,否则就输出“对不起,你不是青”。
    public static void main(String[] args) {
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String s = scanner1.next();
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("请输入密码:");
        String pwd = scanner1.next();
        String str1 = "青";
        if (s.contains(s) && pwd.equals("123")) {
            System.out.println("欢迎你,青");
        } else {
            System.out.println("对不起,你不是青");
        }
    }
}

题目09

        求ax2+bx+c=0方程的根。a,b,c分别为函数的参数,
    如果a≠0,那么:
    (1)当b2-4ac>0,则有两个解;
    (2)当b2-4ac=0,则有一个解;
    (3)当b2-4ac<0,则无解;
    如果a=0,b≠0,那么,
public class Exer13 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("一元二次方程:ax^2+bx+c=0");
        System.out.print("请输入参数a:");
        double a = input.nextDouble();
        System.out.print("请输入参数b:");
        double b = input.nextDouble();
        System.out.print("请输入参数c:");
        double c = input.nextDouble();
        if (a != 0) {
            double temp = b * b - 4 * a * c;
            if (temp > 0) {
                double x1 = (-b + Math.sqrt(temp)) / (2 * a);
                double x2 = (-b - Math.sqrt(temp)) / (2 * a);
                System.out.println("方程有2个根,分别是" + "x1=" + x1 + "x2=" + x2);
            }
            if (temp == 0) {
                double x = -b / (2 * a);
                System.out.println("方程有且仅有一个根:" + x);
            }
            if (temp < 0) {
                System.out.println("方程无解");
            }
        }
        if (a == 0 && b != 0) {
            double x = -c / b;
            System.out.println("方程的根为:" + x);
        }
    }
}

题目10

    赌数游戏
提供三个1-6的随机数,作为掷骰子得到的点数。如果各个点数相同,则为豹子。
如果三个骰子点数和,小于或等于9,则为“小”。
如果三个骰子点数和,大于9,则为“大”。
用户随机选择:押大、押小或者押豹子。通过判断,输出客户是否押正确。
 public static void main(String[] args) {
        int random1 = (int) (Math.random() * 7);
        int random2 = (int) (Math.random() * 7);
        int random3 = (int) (Math.random() * 7);
        System.out.println("三个1-6的随机数" + random1 + " , " + random2 + " , " + random3);
        String result = "";
        if (random1 == random2 && random2 == random3) {
            result = "豹子";
        } else if (random1 + random2 + random3 <= 9) {
            result = "小";
        } else {
            result = "大";
        }
        // 2、用户输入猜的结果
        Scanner input = new Scanner(System.in);
        System.out.print("请押宝,买定离手:(选择:大、小、豹子)");
        String guess = input.next();
        // 3、判断
        if (result.equals(guess)){
            System.out.println("猜对了!");
        }else {
            System.out.println("猜错了,再试一次吧~");
        }
    }

题目11

    编写一个程序,为一个给定的年份找出其对应的中国生肖。
 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个年份:");
        int year = scanner.nextInt();
        int var = year % 12;
        switch (var){
            case 0:
                System.out.println(year+" 年是猴年");
                break;
            case 1:
                System.out.println(year+" 年是鸡年");
                break;
            case 2:
                System.out.println(year+" 年是狗年");
                break;
            case 3:
                System.out.println(year+" 年是猪年");
                break;
            case 4:
                System.out.println(year+" 年是鼠年");
                break;
            case 5:
                System.out.println(year+" 年是牛年");
                break;
            case 6:
                System.out.println(year+" 年是虎年");
                break;
            case 7:
                System.out.println(year+" 年是兔年");
                break;
            case 8:
                System.out.println(year+" 年是龙年");
                break;
            case 9:
                System.out.println(year+" 年是蛇年");
                break;
            case 10:
                System.out.println(year+" 年是马年");
                break;
            case 11:
                System.out.println(year+" 年是羊年");
                break;
        }
    }

题目12

执行如下代码后,c的值是多少?

        int a = 0;
        int c = 0;
        do {
            --c;
            a = a - 1;
        } while (a >= 0);
        System.out.println("c = " + c);

题目13

以下代码的运行结果?

        int i=10;
        while(i>0){
            i = i +1;
            if(i==10){
                break;
            }
        }
        System.out.println("i=" + i);

题目14

    1)输入长和宽,输出长方形,如:输入4和3, 将输出如下图形
    ####
    ####
    ####
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("请输入长方形的长:");
        int a = scanner1.nextInt();
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("请输入长方形的宽:");
        int b = scanner2.nextInt();
        for (int i = 1; i <= b; i++) {
            for (int j = 1; j <= a; j++) {
                System.out.print("#");
            }
            System.out.println();
        }
    }

题目15

2)输入高度,输出直角三角形。如:输入4, 将输出如下图形
#
##
###
####
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("请输入三角形的高度:");
        int n = scanner1.nextInt();
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n - i + 1; j++) {
                System.out.print("#");
            }
            System.out.println();
        }

题目16

打印九九乘法表

        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
        }

题目17

3000米长的绳子,每天减一半。问多少天这个绳子会小于5米?不考虑小数

        int day = 0;
        for (int length = 3000; length >= 5; day++) {
            length /= 2;
        }
        System.out.println(day++);

题目18

打印1-100之间非13的倍数,使用continue语句

        for (int i = 1; i <=100 ; i++) {
            if (i%13!=0){
                System.out.println(i);
            }
        }

题目19

用循环控制语句打印输出:1+3+5+…+99=?的结果

        int sum = 0;
        for (int i = 1; i < 100; i++) {
            if (i % 2 != 0) {
                sum += i;
            }
        }
        System.out.println(sum);

题目20

下面的代码输出结果?

        int i = 0, j = 5;
        tp:
        for (; ; ) {
            i++;
            for (; ; ) {
                if (i > j--)
                    break tp;
            }
        }
        System.out.println("i = " + i + ", j = " + j);//1 -1

题目21

输出从1到100之间所有不能被3整除的数;并输出这些整数的和

        int sum =0;
        for (int i = 1; i <=100 ; i++) {
            if (i%3!=0){
                System.out.println(i);
                sum+=i;
            }
        }
        System.out.println(sum);

题目22

猜数字游戏

随机生成一个100以内的数,猜数字游戏:

从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次?

        int random = (int) (Math.random() * 100);
        System.out.println("生成的随机数是:" + random);
        int i = 1;
        for (; ; i++) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请从键盘上输入一个100以内的数:");
            int input = scanner.nextInt();
            if (input > random) {
                System.out.println("大了");
//                break;
            }
            if (input < random) {
                System.out.println("小了");
//                break;
            }
            if (input == random) {
                System.out.println("猜对了");
                break;
            }
        }
        System.out.println("一共猜了" + i + "次");

题目23

打印1-100之间数,其中3、5、7的倍数不打印(continue)

        for (int i = 1; i <= 100; i++) {
            if (i % 3 == 0 || i % 5 == 0 || i % 7 == 0) {
                System.out.println(i);
            }
        }
        for (int i = 1; i <= 100; i++) {
            if (i % 3 == 0 || i % 5 == 0 || i % 7 == 0) {
                System.out.println(i);
            }
        }

题目24

一个数如果恰好等于它的因子之和,这个数就称为"完数"。(因子:除去这个数本身的约数)

例如6=1+2+3.编程 找出1000以内的所有完数

        System.out.println("1-1000之间的完数有:");
        for (int i = 1; i <=1000 ; i++) {
            int sum =0;
            for (int j = 1; j<i-1;j++){
                if (i%j==0){
                    sum+=j;
                }
            }
            if (sum == i){
                System.out.println(i);
            }
        }

题目25

输入两个正整数m和n,求其最大公约数和最小公倍数

        System.out.println("输入两个正整数m和n:");
        Scanner scanner1 = new Scanner(System.in);
        int m = scanner1.nextInt();
        Scanner scanner2 = new Scanner(System.in);
        int n = scanner1.nextInt();
        int max = (m>n)?m : n;
        int min = (m<n)?m : n;
        //最大公约数
        for(int i=min;i<=max;i++){
            if (m%i==0&&n%i==0){
                System.out.println("最大公约数"+i);
                break;
            }
        }
        // 最小公倍数
        for (int i=max;i<=max*min;i++){
            if (i%m==0&&i%n==0){
                System.out.println("最小公倍数"+i);
                break;
            }
        }

题目26

根据指定月份,打印该月份所属的季节

        System.out.println("请输入一个1~12之间的整数:");
        Scanner scanner = new Scanner(System.in);
        int month = scanner.nextInt();
        if (month == 1 || month == 2 || month == 3){
            System.out.println("春");
        }
        if (month == 4 || month == 5 || month == 6){
            System.out.println("夏");
        }
        if (month == 7 || month == 8 || month == 9){
            System.out.println("秋");
        }
        if (month == 10 || month == 11 || month == 12){
            System.out.println("冬");
        }

题目27

    打印自然数的个数
    1)打印1~100之间 6的倍数的个数
        int flag = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 6 == 0) {
                flag++;
                System.out.println(i);
            }
        }
        System.out.println("flag=" + flag);
    2)求出1~100之间,既是3又是7的倍数的自然数出现的次数?
        int flag = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 3 == 0 && i % 7 == 0) {
                flag++;
                System.out.println(i);
            }
        }
        System.out.println("flag=" + flag);

题目28

求调和级数中从第多少项开始值大于10

调和级数的第n项形式为:1+1/2+1/3+…+1/n

        double sum = 0.0;
        int i = 1;
        while (true) {
            sum += 1.0 / i;
            if (sum > 10) {
                break;
            }
            i++;
        }
        System.out.println(i);

题目29

    打印如下的图形:三角形
       *
       * * *
       * * * * *
       * * * * * * *
       * * * * *
       * * *
       *
        for (int i = 1; i <= 7; i++) {
            if (i <= 4) {
                for (int j = 1; j <= 2 * i - 1; j++) {
                    System.out.print("* ");
                }
                System.out.println();
            }
            if (i > 4) {
                for (int j = 1; j <= 15 - 2 * i; j++) {
                    System.out.print("* ");
                }
                System.out.println();
            }
        }

题目30

    编写程序,打印100-200之间的质数
        for (int i = 100; i <= 200; i++) {
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    break;
                } else {
                    System.out.println(i);
                    break;
                }
            }
        }

题目31

输出所有的水仙花数

所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。

例如: 153 = 111 + 333 + 555

        for (int i = 100; i < 1000; i++) {
            int bai = i / 100;
            int shi = (i - bai * 100) / 10;
            int ge = i - bai * 100 - shi * 10;
            if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge) {
                System.out.println("i=" + i);
            }
        }

题目32

山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。

提示:

(1) 用整型变量water表示水缸里的水“int water = 15;”。

(2) 用整型变量l表示小和尚下山挑水的次数“int l = 0;”。

(3) 分析循环条件(水少于50升),循环操作(水增加5升,挑水次数增加1)。

(4) 套用while循环(或do-while循环)写出代码。

        int water = 15;
        int count = 0;
        while (water < 50) {
            water += 5;
            count++;
        }
        System.out.println("小和尚要挑" + count + "次水才可以把水缸挑满");

题目33

生成13位条形码

Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。

例如:690123456789

计算其校验码的过程为:

① 前十二位的奇数位和6+0+2+4+6+8=26

② 前十二位的偶数位和9+1+3+5+7+9=34

③ 将奇数和与偶数和的三倍相加26+34*3=128

④ 取结果的个位数:128的个位数为8

⑤ 用10减去这个个位数10-8=2

所以校验码为2

(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)

实现上述代码的功能,计算验证码,输入12位条码,返回带验证码的条码。

例:输入:692223361219输出:6922233612192

        System.out.println("请输入一个0~9之间的12位的数:");
        Scanner scanner = new Scanner(System.in);
        Long num = scanner.nextLong();
        Long shiEr = num / 100000000000L;
        Long shiYi = (num - shiEr * 100000000000L) / 10000000000L;
        Long shi = (num - shiEr * 100000000000L - shiYi * 10000000000L) / 1000000000L;
        Long jiu = (num - shiEr * 100000000000L - shiYi * 10000000000L - shi * 1000000000L) / 100000000L;
        Long ba = (num - shiEr * 100000000000L - shiYi * 10000000000L - shi * 1000000000L - jiu * 100000000L) / 10000000L;
        Long qi = (num - shiEr * 100000000000L - shiYi * 10000000000L - shi * 1000000000L - jiu * 100000000L - ba * 10000000L) / 1000000L;
        Long liu = (num - shiEr * 100000000000L - shiYi * 10000000000L - shi * 1000000000L - jiu * 100000000L - ba * 10000000L - qi * 1000000L) / 100000L;
        Long wu = (num - shiEr * 100000000000L - shiYi * 10000000000L - shi * 1000000000L - jiu * 100000000L - ba * 10000000L - qi * 1000000L - liu * 100000L) / 10000L;
        Long si = (num - shiEr * 100000000000L - shiYi * 10000000000L - shi * 1000000000L - jiu * 100000000L - ba * 10000000L - qi * 1000000L - liu * 100000L - wu * 10000L) / 1000L;
        Long san = (num - shiEr * 100000000000L - shiYi * 10000000000L - shi * 1000000000L - jiu * 100000000L - ba * 10000000L - qi * 1000000L - liu * 100000L - wu * 10000L - si * 1000L) / 100L;
        Long er = (num - shiEr * 100000000000L - shiYi * 10000000000L - shi * 1000000000L - jiu * 100000000L - ba * 10000000L - qi * 1000000L - liu * 100000L - wu * 10000L - si * 1000L - san * 100L) / 10L;
        Long yi = (num - shiEr * 100000000000L - shiYi * 10000000000L - shi * 1000000000L - jiu * 100000000L - ba * 10000000L - qi * 1000000L - liu * 100000L - wu * 10000L - si * 1000L - san * 100L - er * 10L) / 1L;
        Long odds = shiEr + shi + ba + liu + si + er;
        Long even = shiYi + jiu + qi + wu + san + yi;
        Long sum = odds + even * 3;
        Long code = 0L;
        if (sum < 100) {
            Long ge = sum % 10;
            if (ge == 0) {
                code = 0L;
            } else {
                code = 10 - ge;
            }
        }
        if (sum < 1000) {
            Long ge = sum % 100;
            if (ge == 0) {
                code = 0L;
            } else {
                code = 10 - ge;
            }
        }
        System.out.println("生成13位条形码: " + num + code);

题目34

实现判断一个4位整数,统计出此整数里面包含多少个偶数,多少个奇数的功能

        System.out.println("请输入一个4位的整数:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        int flag = 0;
        for (int i = 1; i <= num; i++) {
            if (i % 2 == 0) {
                flag++;
            }
        }
        System.out.println("此整数里面包含" + flag + "个偶数");
        int flag1 = 0;
        for (int i = 1; i <= num; i++) {
            if (i % 2 != 0) {
                flag1++;
            }
        }
        System.out.println("此整数里面包含" + flag1 + "个奇数");

题目35

开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适。

        System.out.println("请输入您的身高:");
        Scanner scanner1 = new Scanner(System.in);
        double inputHeight = scanner1.nextDouble();
        System.out.println("您的身高为:" + inputHeight + " cm");
        System.out.println("请输入您的体重:");
        Scanner scanner2 = new Scanner(System.in);
        double inputWeight = scanner2.nextDouble();
        System.out.println("您的体重为:" + inputWeight + " 斤");
        double varWight = (inputHeight - 108) * 2;
        System.out.println("计算出来的理想体重在: " + (varWight - 10.0) + " 斤到 " + (varWight + 10.0) + " 斤之间");
        if (inputWeight < varWight - 10.0 || inputWeight > varWight + 10.0) {
            System.out.println("体重不合格!");
        } else {
            System.out.println("体重合格!");
        }


相关文章
|
3月前
|
Java
解析Java线程池:参数详解与执行流程
解析Java线程池:参数详解与执行流程
43 1
|
2月前
|
消息中间件 存储 Java
使用Java构建实时数据处理流程
使用Java构建实时数据处理流程
|
23天前
|
运维 Cloud Native Java
Java项目部署的发展流程
本文对比分析了四种不同的应用部署方式:传统部署、虚拟化部署、容器化部署及云原生部署。传统部署直接在物理机上运行程序,存在资源复用难等问题。虚拟化部署通过虚拟机技术实现了资源的有效隔离与利用,但可能会造成性能损失。容器化部署则进一步提升了应用的可移植性和资源利用率,减轻了运维负担。云原生部署结合容器化、微服务等技术,实现了应用的快速迭代、高效运维和灵活扩展,适用于现代互联网应用的开发与部署。每种方式均针对其特点进行了详细的流程描述与优缺点分析。
|
1月前
|
安全 Java 编译器
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
46 18
|
1月前
|
Java
在Java编程的广阔天地中,条件语句是控制程序流程、实现逻辑判断的重要工具。
在Java编程中,if-else与switch作为核心条件语句,各具特色。if-else以其高度灵活性,适用于复杂逻辑判断,支持多种条件组合;而switch在多分支选择上表现优异,尤其适合处理枚举类型或固定选项集,通过内部跳转表提高执行效率。两者各有千秋:if-else擅长复杂逻辑,switch则在多分支选择中更胜一筹。理解它们的特点并在合适场景下使用,能够编写出更高效、易读的Java代码。
29 1
|
1月前
|
Java
Java 流程控制15道练习题(选择&循环)
Java 流程控制15道练习题(选择&循环)
33 10
|
1月前
|
Java 数据安全/隐私保护
03 Java流程控制-分支(if+switch+变量类型)
03 Java流程控制-分支(if+switch+变量类型)
23 5
|
1月前
|
Java 机器人 开发者
04 Java流程控制-循环(while+for+关键字+嵌套)
04 Java流程控制-循环(while+for+关键字+嵌套)
49 4
|
2月前
|
Java
Java程序的流程控制
程序执行顺序经典三类: 1. **顺序结构**: 代码从上至下依次执行。 2. **分支结构**: - `if/else`: 根据条件选择执行路径。 - `switch`: 通过匹配值选择分支,需注意`break`避免穿透现象。 3. **循环结构**: 控制代码重复执行,如`for`, `while`, `do...while`等。 (注:markdown格式不支持内嵌卡片或图片,故摘要中未包含原文中的图片信息。)
147 7
|
29天前
|
存储 安全 Java
【Java 第四篇章】流程控制、容器
本文档详细介绍了Java中的流程控制、集合类型、数组声明及容器的声明与遍历等内容。在流程控制部分,包括了if、if...else、if...else if...else、switch等语句的使用方法,并提供了具体示例。接着,文档对比分析了Java中单列集合(如HashSet、LinkedHashSet、TreeSet等)与双列集合(如HashMap、LinkedHashMap、Hashtable等)的特点及底层实现原理。此外,还介绍了如何声明与初始化数组,并提供了多种循环结构的使用示例。最后,通过具体的代码示例展示了不同集合类型的声明、基本操作(如添加、删除、更新、查找)以及遍历方法。
12 0