【Java零基础视频教程】综合练习题(一)——基础练习

news2024/10/1 12:12:49

文章目录

  • 基础练习
    • 飞机票
    • 打印素数
    • 生成验证码
    • 复制数组
    • 评委打分
    • 数字加密
    • 抽奖
    • 双色球

基础练习

飞机票

机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
​ 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。

可以设置一个获取价格的函数getPrice,传入机票原价、月份和头等舱或经济舱,得出折后价
在主函数中,根据月份和舱型改变参数

package com.itheima;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc  = new Scanner(System.in);
        System.out.println("请输入票价");
        double price = sc.nextInt();
        System.out.println("请输入月份");
        int month = sc.nextInt();
        System.out.println("请输入座位");
        String seat = sc.next();

        if(month>=5 && month<=10){
            price=getPrice(price,seat,0.9,0.85);
        }else if ((month >= 1 && month <= 4) || (month >= 11 && month <= 12)){
            price=getPrice(price,seat,0.7,0.65);
        }else{
            System.out.println("输入月份有误");
        }

        System.out.println(price);
    }

    public static int getPrice(double price,String seat,double v0,double v1){
        if(seat.equals("头等舱")){
            return (int)(price*v0);
        }else{
            return (int)(price*v1);
        }     
    }
}

打印素数

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

package com.itheima.test;

public class Test2 {
    public static void main(String[] args) {

        int count = 0;
        for (int i = 101; i <= 200; i++) {
            boolean flag = true;
            for (int j = 2; j < i; j++) {
                if(i % j == 0){
                    flag = false;
                    break;
                }
            }
            if(flag){
                System.out.println("当前数字"+i+"是质数");
                count++;
            }
        }

        System.out.println("一共有" + count + "个质数");
    }
}

生成验证码

​ 定义方法实现随机产生一个5位的验证码
验证码格式:
​长度为5,前四位是大写字母或者小写字母,最后一位是数字

    //方法:
    //在以后如果我们要在一堆没有什么规律的数据中随机抽取
    //可以先把这些数据放到数组当中
    //再随机抽取一个索引

先把所有的验证码组成成分放入一个数组中,然后在这个数组中随机数抽取。
在String类的字符串时,要写空字符串,String result = "";

package com.itheima;

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

public class Main {
    public static void main(String[] args) {

        //1.大写字母和小写字母都放到数组当中
        char [] arr = new char[52];
        for(int i=0;i<arr.length;i++){
            if(i<=25){
                arr[i]=(char)(97+i);//添加小写字母        a--97
            }else{
                arr[i]=(char)(65+i-26);//添加大写字母     A--65
            }
        }
		//定义一个字符串类型的变量,用来记录最终的结果
        String result = "";
	
		//2.随机抽取4次
        Random random = new Random();
        for(int i=0;i<4;i++){
            int index = random.nextInt(arr.length);
            result+=arr[index];
        }
        
        //3.随机抽取一个数字0~9
        result+=(int)(random.nextInt(10));
        System.out.println(result);
    }
}

复制数组

把一个数组中的元素复制到另一个新数组中去。

package com.itheima.test;

public class Test4 {
    public static void main(String[] args) {
        //1.定义一个老数组并存储一些元素
        int[] arr = {1,2,3,4,5};
        //2.定义一个新数组的长度跟老数组一致
        int[] newArr = new int[arr.length];
        //3.遍历老数组,得到老数组中的每一个元素,依次存入到新数组当中
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        //4.新数组中已经存满元素了
        for (int i = 0; i < newArr.length; i++) {
            System.out.println(newArr[i]);
        }

    }
}

评委打分

在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。

可设置4个函数,获取打分、计算最高分、计算最低分、计算平均分。
使用数组来存取分数。

package com.itheima;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        int[] scoreArr = getScores();
        for(int i = 0; i < scoreArr.length; i++){
            System.out.println(scoreArr[i]);
        }
        int max = getMax(scoreArr);
        int min = getMin(scoreArr);
        int sum = getSum(scoreArr);
        int avg=(sum-max-min)/(scoreArr.length-2);
        System.out.println("最后得分:"+avg);
    }

    private static int getSum(int[] scoreArr) {
        int sum = 0;
        for(int i=0;i<scoreArr.length;i++){
            sum+=scoreArr[i];
        }
        return sum;
    }

    private static int getMin(int[] scoreArr) {
        int min = scoreArr[0];
        for(int i = 1; i < scoreArr.length; i++){
            if(scoreArr[i] < min){
                min = scoreArr[i];
            }
        }
        return min;
    }

    private static int getMax(int[] scoreArr) {
        int max = scoreArr[0];
        for(int i = 1; i < scoreArr.length; i++){
            if(scoreArr[i] > max){
                max = scoreArr[i];
            }
        }
        return max;
    }

    private static int[] getScores() {
        int[] scores = new int[5];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; ) {
            System.out.println("请输入第" + (i + 1) + "个分数");
            int score = sc.nextInt();
            if(score>=0 && score<=100){
                scores[i] = score;
                i++;
            }else{
                System.out.println("输入有误,请重新输入");
            }
        }
        return scores;
    }
}

数字加密

某系统的数字密码(大于0),比如1983,采用加密方式进行传输。

规则如下:
​ 先得到每位数,然后每位数都加上5 , 再对10求余,最后将所有数字反转,得到一串新数。

举例:

		1	9	8	3
+5		6   14  13  8
%10		6   4   3   8
反转	   8   3   4   6
加密后的结果就是:8346

把一个数字上的各位数字拆出来分入数组中。为了在数组中能顺序存储位数上的数字,可以起始索引index设为length-1,然后倒着填入数据,具体看代码getNum()函数

package com.itheima;


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("请输入密码:");
        Scanner sc = new Scanner(System.in);
        int start = sc.nextInt();
        int[] startArr = getNum(start);



        for (int i = 0; i < startArr.length; i++) {
            startArr[i] = startArr[i] + 5;
            startArr[i] = startArr[i] % 10;
        }

        for (int i = startArr.length-1; i >= 0 ; i--) {
            System.out.print(startArr[i]);
        }

    }

    private static int[] getNum(int start) {
        int temp = start;
        int count = 0;
        while(start !=0){
            start /=10;
            count++;
        }

        int[] arr = new int[count];
        int index = arr.length-1;
        while(temp!=0){
            int ge = temp % 10;
            arr[index] = ge;
            temp /= 10;
            index--;
        }
        return arr;
    }
}

抽奖

一个大V直播抽奖,奖品是现金红包,分别有{2, 588 , 888, 1000, 10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)

888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出

常规解法是把在奖金池数组中,用一个随机数模拟抽取第x个奖金,然后放入新数组中。之后再奖金池中抽取后需要在新数组确认是否抽取过,如果是则重新抽取。

下面的解法是把奖金池打乱,打乱后顺序输出。

package com.itheima.test;

import java.util.Random;

public class Test10 {
    public static void main(String[] args) {
        //1.把奖池里面的所有奖项打乱顺序
        int[] arr = {2, 588, 888, 1000, 10000};
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int randomIndex = r.nextInt(arr.length);
            int temp = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = temp;
        }
        //2.遍历奖池,从0索引开始获取每一个奖项
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

    }
}

双色球

在这里插入图片描述

package com.itheima;

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

public class Main {
    public static void main(String[] args) {
        //1.随机生成双色球中奖号
        int[] winNums = getNumber();

        //2.键盘录入用户投注号码
        int [] userNums = new int[6];
        //输入红球
        for (int i = 0; i < userNums.length; i++) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第" + (i+1) + "个红球号码");
            userNums[i] = sc.nextInt();
        }
        //输入蓝球
        System.out.println("请输入蓝球号码");
        Scanner sc = new Scanner(System.in);
        userNums[userNums.length-1] = sc.nextInt();


        //3.判断中奖情况

        int redCount = 0;
        int blueCount = 0;

        for (int i = 0; i < userNums.length-1; i++) {
            for (int j = 0; j < winNums.length-1; j++) {
                if(userNums[i] == winNums[j]){
                    redCount++;
                }
            }
        }
        for (int i = userNums.length-1; i < userNums.length; i++) {
            if(userNums[i] == winNums[i]){
                blueCount++;
            }
        }

        if(redCount==6&&blueCount==1){
            System.out.println("恭喜你,中奖了1000万!");
        }else if(redCount==6){
            System.out.println("恭喜你,中奖了500万!");
        }else if (redCount==5&&blueCount==1){
            System.out.println("恭喜你,中奖了3000元!");
        }else if (redCount==5){
            System.out.println("恭喜你,中奖了200元!");
        }else if (redCount==4&&blueCount==1){
            System.out.println("恭喜你,中奖了200元!");
        }else if (redCount==4){
            System.out.println("恭喜你,中奖了10元!");
        }else if (redCount==3&&blueCount==1){
            System.out.println("恭喜你,中奖了10元!");
        }else{
            System.out.println("恭喜你,中奖了5元!");
        }
    }

    private static int[] getNumber() {
        int[] winNums = new int[7];
        //红色球中奖号码
        for (int i = 0; i < winNums.length; i++) {
            Random random = new Random();
            int redNum = random.nextInt(33) + 1;
            if(isaBoolean(winNums, redNum)){
                winNums[i] = redNum;
            }else{
                i--;
            }
        }
        //蓝色球中奖号码
        for (int i = winNums.length-1; i < winNums.length; i++) {
            Random random = new Random();
            winNums[i] = random.nextInt(16) + 1;
        }

        System.out.println("双色球中奖号码为:");
        for (int i = 0; i < winNums.length; i++) {
            System.out.print(winNums[i] + " ");
        }
        System.out.println();
        return winNums;
    }

    private static boolean isaBoolean(int[] winNums, int redNum) {
        for (int i = 0; i < winNums.length; i++) {
            if(winNums[i] == redNum){
                return false;
            }
        }
        return true;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pxe安装部署

RHEL7为例&#xff1a; ifconfig查看ip 一.环境配置 1.配置软件仓库&#xff1a; mkdir /rhel7 mount /dev/cdrom /rhel7 echo mount /dev/cdrom /rhel74 >> /etc/rc.d/rc,local chmod x /etc/rc.d/rc.local 2.关闭火墙和selinux&#xff0c;下载…

【极速前进】20240706-24240714:用于Agent的树搜、理解LLM的语种困惑、事实知识抽取微调、Quiet-STaR

相关博客 【极速前进】20240706-24240714&#xff1a;用于Agent的树搜、理解LLM的语种困惑、事实知识抽取微调、Quiet-STaR 【极速前进】20240615-20240623&#xff1a;Zipper融合模态、VideoLLM视频理解、WebAgent可以自我改善、Nemotron-4、AnyGPT统一模态 【极速前进】20240…

Final Shell for Mac 虚拟机连接工具【简单易操作,轻松上手】【开发所需连接工具】

Mac分享吧 文章目录 效果一、下载软件二、安装软件三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件 链接&#xff1a;http://www.macfxb.cn 二、安装软件 三、运行测试 安装完成&#xff01;&#xff01;&#xff01;

Kubernets(k8s) 网络原理三:同主机内Pod相互访问

前两篇文章中我们介绍了pod怎么和宿主机通信以及pod怎么访问外网&#xff0c;这两种通信是理解pod间通信的基础。 关于pod间的相互访问&#xff0c;这里还需要细化一下。回想一下pod在k8s节点中的分布&#xff0c;两个pod可能分布在同一台宿主机上&#xff0c;也可能分布在不同…

可视化图表与页面源代码显示

可视化图表与页面源代码显示 页面效果&#xff1a; <!DOCTYPE html> <html lang"en" style"height: 100%"> <head><meta charset"utf-8"><title>饼状图</title><style>body {display: flex;height:…

基于51单片机的交通信号灯proteus仿真设计

1.功能简介 交通信号灯是一种经典应用电路&#xff0c;本设计基于51单片机&#xff0c;利用Proteus仿真软件构建了一个模拟交通信号灯系统。该系统能够模拟真实交通环境中的信号变化&#xff0c;包括红灯、黄灯和绿灯的切换&#xff0c;以及倒计时显示等功能&#xff0c;各种灯…

谷歌出品,一款免费的智能绘图工具

AutoDraw是由Google开发的一款基于网络的智能绘图工具&#xff0c;旨在通过人工智能技术帮助用户快速、简便地创建图画和图表。该工具于2017年4月11日由谷歌创意实验室推出&#xff0c;并迅速获得了广泛关注。 AutoDraw的核心功能是利用机器学习算法识别用户的草图或涂鸦&…

C++STL专题-string类

目录 1.标准库中的string类 1.1 string类 2.2 auto和范围for 2.2.1 auto关键字 2.2.2 范围for 2.3 string类的常用接口讲解 1.string类对象的常见构造 2.元素访问 3.迭代器(iterator) 3.1 begin 和 end 3.2 rbegin 和 rend 4.容器 5.修改 5.1 append 5.2 assign…

在C#中为图片添加数字水印的几种办法

最近在写个人项目时&#xff0c;有遇到需要将图片加上水印防止被盗取的需求。这里找了几种实现方式&#xff0c;可供有需要的朋友参考。 本身我不是搞算法这块的&#xff0c;所以这里只是找了一些实现&#xff0c;也没有继续深究下去。 以前在学校的时候从书上了解过可以将一…

cmake常用命令学习

1.include https://blog.csdn.net/qq_38410730/article/details/102677143 CmakeLists.txt才是cmake的正统文件&#xff0c;而.cmake文件是一个模块文件&#xff0c;可以被include到CMakeLists.txt中。 include指令一般用于语句的复用&#xff0c;也就是说&#xff0c;如果有…

OBS Studio:如何打造专业级的视频直播体验

1.简介 OBS&#xff08;Open Broadcaster Software&#xff09;是一款开源的视频录制和直播软件&#xff0c;广泛用于视频制作、游戏直播和网络直播。它支持多种操作系统&#xff0c;包括Windows、macOS和Linux。OBS提供了丰富的功能&#xff0c;包括但不限于&#xff1a; **…

聊聊跨境电商平台与固定IP的那些事

IP地址网络地址&#xff08;网络号&#xff09;主机地址&#xff08;地址号&#xff09;&#xff0c;IP地址是一台电脑在网络中的唯一标识&#xff0c;可分为固定IP与动态IP。那么IP地址的分类有哪些&#xff1f;什么IP适合亚马逊/eBay/速卖通等平台运营时使用&#xff1f; A类…

Spring5 的日志学习

我们在使用 Spring5 的过程中会出现这样的现像&#xff0c;就是 Spring5 内部代码打印的日志和我们自己的业务代码打印日志使用的不是统一日志实现&#xff0c;尤其是在项目启动的时候&#xff0c;Spring5 的内部日志使用的是 log4j2&#xff0c;但是业务代码打印使用的可能是 …

DNS安全概述

一、DNS的解析过程 1.递归解析 递归解析是一种由DNS客户端&#xff08;通常是用户的应用程序&#xff0c;如一个浏览器&#xff09;向本地DNS解析器发出解析请求&#xff0c;然后本地DNS解析器负责查询最终结果并将结果返回给客户端&#xff0c;而中间的所有查询请求都由本地D…

每日OJ_牛客HJ62 查找输入整数二进制中1的个数

目录 牛客HJ62 查找输入整数二进制中1的个数 解析代码 牛客HJ62 查找输入整数二进制中1的个数 查找输入整数二进制中1的个数_牛客题霸_牛客网 解析代码 本题是计算一个数二进制表示中1的个数&#xff0c;通过&#xff08;n >> i) & 1可以获取第i位的二进制值&…

基于Spring boot + Vue的校园论坛

作者的B站地址&#xff1a;程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csdn地址&#xff1a;程序员云翼-CSDN博客 1.项目技术栈&#xff1a; 前后端分离的项目 后端&#xff1a;Springboot MybatisPlus 前端&#xff1a;Vue ElementUI 数据库&#xff1a; …

聚星文社 聚星3高级推理创作

聚星文社 聚星3高级推理创作 Docshttps://qvfbz6lhqnd.feishu.cn/wiki/D3YLwmIzmivZ7BkDij6coVcbn7W

CAS5.3自定义登录校验规则

前一篇文章介绍过CAS自定义用户信息, 这个用户信息实在登录成功后加到session中的, 今天来介绍一下CAS5.3怎么自定义登录校验逻辑 思路 有了前一篇文章的铺垫这一次自定义登录校验其实就很简单了, 因为想要把用户信息放入到session中是一定要在登陆的时候完成的,因此这次我们…

Codeforces Round 960 (Div. 2) A~E

A. Submission Bait &#xff08;思维&#xff09; 题意&#xff1a; A l i c e Alice Alice 和 B o b Bob Bob 正在玩一个数组 a a a 中大小为 n n n 的游戏。 他们轮流进行操作&#xff0c; A l i c e Alice Alice先开始。无法操作的玩家将输掉。首先&#xff0c;将变量…

常用控件之 QWidget

目录 一、控件概述 1.关于控件体系的发展&#xff1a; 二、QWidget 核心属性 1.核心属性概览 2.enabled 3.geometry &#x1f335;window frame&#xff08;窗口框架&#xff09; 的影响 4.windowTitle 5.windowIcon &#x1f335;使用 qrc 文件管理资源 6.windowOpa…