【Java】基础练习(十)

news2024/9/30 1:39:04

1.判断邮箱

输入一个电子邮箱,判断是否是正确电子邮箱地址。 正确的邮箱地址:

  • 必须包含 @ 字符,不能是开头或结尾
  • 必须以 .com结尾
  • @和.com之间必须有其他字符

(1) Email类:

package swp.kaifamiao.codes.Java.d0823;
/*
 * 输入一个电子邮箱,判断是否是正确电子邮箱地址。
 * 正确的邮箱地址:
 * 必须包含 @ 字符,不能是开头或结尾
 * 必须以 .com结尾
 * @和.com之间必须有其他字符
 */

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Email {
    /**
     * 判断输入的电子邮箱是否正确
     * @  email 控制台输入
     * @return 布尔型(true/false)
     */
    public static String isEmail(String email){
        // 判断是否包含 @ 字符,且不位于开头或结尾
        if (!email.contains("@") || email.startsWith("@") || email.endsWith("@")){
            return "邮箱无效!";
        }
        // 判断是否以“.com”结尾
        if (!email.endsWith(".com")){
            return "邮箱无效!";
        }
        // 判断“@”和“,com”之间有没有其他字符
        int atIndex = email.indexOf("@");
        int comIndex = email.indexOf(".com");
        if (atIndex+1 > comIndex){
            return "邮箱无效!";
        }
        return "您输入的邮箱有效!";
    }
}

(2) EmailTest测试类:

package swp.kaifamiao.codes.Java.d0823;

import java.util.Scanner;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class EmailTest {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入邮箱:");
        String str = input.next();
        String str1 = Email.isEmail(str);
        System.out.println(str1);
    }
}

(3) 运行效果:

在这里插入图片描述
在这里插入图片描述


2. 生成密码

随机生成一个 6 位的密码,要求:

  • 不包含重复字符
  • 要有字母和数字
  • 不能以数字开头

(1) Email类:

package swp.kaifamiao.codes.Java.d0823;
/*
 *随机生成一个 6 位的密码,要求:
 * 不包含重复字符
 * 要有字母和数字
 * 不能以数字开头
 */

import java.util.Random;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Password {
    public static void main(String[] args) {
        // 定义一个长度为6的字符数组用来存放密码
        char[] arr = new char[6];
        // 生成数字和字母的字符集合
        String characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        // 创建随机对象
        Random rand = new Random();
        // 设置密码的开头为非数字的随机字母
        arr[0] = characters.charAt(rand.nextInt(52) + 10);
        for (int i = 1; i < arr.length; i++) {
            char randomChar;
            do {
                randomChar = characters.charAt(rand.nextInt(62));
            } while (contains(arr, randomChar));

            arr[i] = randomChar;
        }

        // 将字符数组转换为字符串
        String randomPassword = new String(arr);
        System.out.println("随机生成的密码:" + randomPassword);
    }

    // 判断字符数组中是否包含某个字符

    private static boolean contains(char[] arr, char c) {
        for (char ch : arr) {
            if (ch == c) {
                return true;
            }
        }
        return false;
    }
}

(2)运行效果:

在这里插入图片描述
在这里插入图片描述


3.生成幸运数字

随机生成 20 个 1 ~ 40 之间的不重复幸运数字存储到数组中。 要求:

  • 数组中的数字乱序

(1) LuckyNumbers类:

package swp.kaifamiao.codes.Java.d0823;

/*
生成幸运数字
随机生成 20 个 1 ~ 40 之间的不重复幸运数字存储到数组中。 要求:
数组中的数字乱序
 */

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

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class LuckyNumbers {
    public static void main(String[] args) {
        int[] arr = new int[20];

        Random rand = new Random();
        for (int i = 0; i < arr.length;) {
            int num = rand.nextInt(40) + 1;
            Arrays.sort(arr, 0, i);
            if (Arrays.binarySearch(arr, 0, i, num) < 0){
                arr[i ++] = num;
            }
        }

        charge(arr);
        charge(arr);
        charge(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void charge(int[] arr){
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            int index = random.nextInt(arr.length);
            int index1 = random.nextInt(arr.length);

            int temp = arr[index];
            arr[index] = arr[index1];
            arr[index1] = temp;
        }
    }
}

(2) 运行效果:

在这里插入图片描述


4.去除重复字符

编写一个程序,去除字符串中的重复字符


(1) Deduplication类:

package swp.kaifamiao.codes.Java.d0823;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Deduplication {
    public static String arrDeduplication(String str){
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (sb.indexOf(String.valueOf(c)) == -1){
                sb.append(c);
            }
        }
        return sb.toString();
    }
}

(2) DeduplicationTest类:

package swp.kaifamiao.codes.Java.d0823;

import java.util.Scanner;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class DeduplicationTest {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入字符串:");
        String str = input.next();
        String result = Deduplication.arrDeduplication(str);
        System.out.println("去重后的字符串为:" + result);
    }
}

(3) 运行效果:

在这里插入图片描述


5.最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

(1)MaxSubstring类:

package swp.kaifamiao.codes.Java.d0823;

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

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class MaxSubstring {
    public static int maxSub(String str) {
        int count= 0;
        int[] arr = new int[str.length()];
        int max = 0;
        for (int i = 0; i < str.length(); i++) {
            int j = str.codePointAt(i);
            Arrays.sort(arr);
            // 查看元素有没有出现过
            if (Arrays.binarySearch(arr, str.length() - i, arr.length, j) < 0) {
                // 没有出现过
                count ++;
            } else {
                // 出现过
                max = Math.max(max,count);
                count = 1;
                arr = new int[str.length()];
            }
            arr[0] = j;
        }
        max = Math.max(max,count);
        return max;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入字符串:");
        String str = scanner.nextLine();
        int result = maxSub(str);
        System.out.println("最长子串长度为:" + result);
    }
}

(2)运行效果:

在这里插入图片描述

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

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

相关文章

从互联网到车企做测试,什么体会?

互联网软件测试&#xff0c;能跨到车企做测试么&#xff1f; 这是我之前在某个群里划水看到一位小伙伴提出过的问题&#xff0c;当时我并没有回答&#xff0c;不过这个主题我倒是记在了草稿里&#xff0c;因为我自己就是这样的经历&#xff0c;留着后面有时间写一些内容分享一…

了解混淆矩阵和方差分析分数之间的差异

一、说明 开始都本文之前&#xff0c;需要读者预先知道两个概念&#xff0c;方差分析、混淆矩阵&#xff1b;本文将对两者的异同点进行分析。 二、混淆矩阵、方差分析 2.1 混淆矩阵 混淆矩阵就像一个图表&#xff0c;可以帮助我们了解机器学习模型的表现如何。想象一下&#xf…

【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P1000-超级玛丽游戏【入门1顺序结构】&#x1f30f;题目描述&#x1f30f;输入格…

深入理解linux内核--进程间通信

管道 管道(pipe)是所有Unix都愿意提供的一种进程间通信机制。管道是进程之间的一个单向数据流&#xff1a; 一个进程写入管道的所有数据都由内核定向到另一个进程&#xff0c;另一个进程由此就可以从管道中读取数据。 在Unix的命令shell中&#xff0c;可以使用“1”操作符来创…

银河麒麟arm版服务器安装docker

安装 在线安装&#xff1a;输入下面命令&#xff0c;等待安装完成即可 #关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.serviceyum install -y docker# 修改docker拉取源为国内 rm -rf /etc/docker mkdir -p /etc/docker touch /etc/docker/da…

第8天----【位运算进阶之----异或(^)】

今天我们来学习C语言中的异或。 文章目录 一、基本知识&#xff1a;异或操作满足的定律&#xff1a;(important) 二、拓展应用&#xff1a;1. 交换两个变量的值&#xff1a;2. 判断两个数的奇偶性&#xff1a;3. 检测落单的数(出现奇数次的数)&#xff1a;检测丢失的数: 4. 加密…

伴儿行“共享七彩童年”红色教育讲堂篇

迎着徐徐海风&#xff0c;一群青少年缓缓漫步于刘公岛的海岸线&#xff0c;在威海市环翠区伴儿行青少年服务中心老师的带领下&#xff0c;一场沉浸式的红色教育讲堂在百年后的甲午海战战场拉开帷幕。 从甲午海战的前期国际形势讲到当今的国际国内形势&#xff0c;从甲午清朝海军…

SpringCloud学习笔记(六)_Ribbon服务调用

Ribbon介绍 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具 Ribbon是Netflix发布的开源项目&#xff0c;主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时、重试等。简单的说&#xff0c;就是…

【HCIP】15.MPLS基础

多协议标签交换 MPLS位于TCP/IP协议栈中的数据链路层和网络层之间&#xff0c;可以向所有网络层提供服务。 通过在数据链路层和网络层之间增加额外的MPLS头部&#xff0c;基于MPLS头部实现数据快速转发。 术语 MPLS域&#xff08;MPLS Domain&#xff09;&#xff1a;一系列…

EL0读取arm寄存器获取时间的方法

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈思考: 如何在EL0获取当前系统时间?如何在Userspace获取当前系统时间?在EL0可以通过读取ARM寄存器,获取系统的…

Mongodb两种启动方法

一、命令行启动 1.修改存放数据库的位置 说明&#xff1a;E:\data\mongodb&#xff1b;我在E盘创建的文件夹mongodb mongod --dbpathE:\data\mongodb 2.成功启动 说明&#xff1a;默认端口27017&#xff0c;代表已经启动成功 &#xff0c;并在mongodb自动创建文件 二、配置项…

Time-harmonic Maxwell’s equations

参考文献:Preconditioners and their analyses for edge element saddle-point systems arising from time-harmonic Maxwell’s equations

战略是通过分析战领一个位置

战略定位派&#xff1a;战略形成是一个分析过程【安志强趣讲266期】 趣讲大白话&#xff1a;占个有利位置 **************************** 定位通俗讲就是占个有利位置 企业界“心智定位”和“战略定位”吵得很凶 定位这个词最先由特劳特提出&#xff0c;营销要占领消费者的心智…

飞天使-k8s基础组件分析-服务与ingress

文章目录 服务的介绍服务代理服务发现连接集群外服务服务发布无头服务 服务&#xff0c;pod和dns的关系端口转发通过expose 暴露应用服务案例INGRESSMetalLB使用参考文档 服务的介绍 服务的作用是啥&#xff1f; 提供外部调用&#xff0c;保证podip的真实性看看服务解决了什么…

文件上传漏洞-upload靶场1-2关 通过笔记(如何区分前段验证和后端验证)

文件上传漏洞-upload靶场1-2关 通过笔记&#xff08;区分前段验证和后端验证&#xff09; 前言 upload是一个文件上传的专用靶场&#xff0c;搭设也非常简单&#xff0c;只需要把相关源码文件放到apache的网站目录下即可使用&#xff0c;或者去github下载一键绿化包进行安装链…

内网安全:WMI协议与SMB协议横向移动

目录 网络拓扑图 网络环境说明 WMI协议 SMB协议 域内信息收集 WMI协议 - 横向移动 利用方式一&#xff1a;wmic命令 利用方式一&#xff1a;cscript 利用方式一&#xff1a;impacket SMB协议 - 横向移动 利用方式一&#xff1a;psexec 利用方式二&#xff1a;psexe…

外贸客户开发:如何通过谷歌地图找到外贸大客户?

前言&#xff1a;这篇文章分享的实操案例对于外贸从业者特别有用&#xff0c;并分享了一款免费可用的浏览器插件进行如何批量获客。 做外贸需要找客户成交&#xff0c;外贸业务员成单的前提是就是找到国外客户。 外贸找客户的方法无外乎两种&#xff1a; 第一种是主动出击第…

三、pikachu之文件上传

文章目录 1、文件上传概述2、客户端检测2.1 客户端检测原理及绕过方法2.2 实际操作之client check 3、服务端检测3.1 MIME type3.3.1 检测原理3.3.2 绕过方法3.3.3 实际操作之MIME type 3.2 文件内容检测3.2.1 检测原理3.2.2 绕过方式3.2.3 实际操作之getimagesize() 3.3 其他服…

前端学习记录~2023.8.10~JavaScript重难点实例精讲~第6章 Ajax

第 6 章 Ajax 前言6.1 Ajax的基本原理及执行过程6.1.1 XMLHttpRequest对象&#xff08;1&#xff09;XMLHttpRequest对象的函数&#xff08;2&#xff09;XMLHttpRequest对象的属性 6.1.2 XMLHttpRequest对象生命周期&#xff08;1&#xff09;创建XMLHttpRequest对象&#xff…

[C++入门]---vector深度剖析及模拟实现

文章目录 1. vector功能函数模拟实现vector成员变量定义vecor构造函数vector迭代器vector的size函数vector的capacity函数vector的operator[]函数vector的reserve函数vector的resize函数vector的insert函数vector的erase函数vector的push_back函数vector的pop_back函数vector的…