【Java】基础练习(十)

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)运行效果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4-4 Representing text Exercise

本文所用资料下载 一. Representing text Let’s load Jane Austen’s Pride and Prejudice. We first split our text into a list of lines and pick an arbitrary line to focus on: with open(D:jane-austen/1342-0.txt, encodingutf8) as f:text f.read() lines text.…

简单了解文件上传漏洞(md版)

简单了解文件上传漏洞 一、什么是文件上传漏洞二、常见功能点三、成功的前提四、文件上传的校验方式五、Pass-1六、Pass-2七、蚁剑结合msf获取目标权限 一、什么是文件上传漏洞 在文件上传的功能处&#xff0c;如果服务端未对上传的文件进行严格的验证和过滤&#xff0c;导致攻…

登录校验-Filter-详解

目录 执行流程 拦截路径 过滤器链 小结 执行流程 过滤器Filter拦截到请求之后&#xff0c;首先执行方放行之前的逻辑&#xff0c;然后执行放行操作&#xff08;doFilter&#xff09;&#xff0c;然后会访问对应的Web资源&#xff08;对应的Controller类&#xff09;&#…

【C++】C++ 引用详解 ⑤ ( 函数 “ 引用类型返回值 “ 当左值被赋值 )

文章目录 一、函数返回值不能是 " 局部变量 " 的引用或指针1、函数返回值常用用法2、分析函数 " 普通返回值 " 做左值的情况3、分析函数 " 引用返回值 " 做左值的情况 函数返回值 能作为 左值 , 是很重要的概念 , 这是实现 " 链式编程 &quo…

Acrobat Pro DC软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Acrobat Pro DC是Adobe公司开发的一款PDF编辑软件&#xff0c;简称为DC&#xff0c;是Acrobat系列软件中的一款&#xff0c;是行业内的标准工具&#xff0c;被广泛应用于文档处理、电子合同、PDF表单等领域。 Acrobat Pro DC软…

【SpringBoot】第一篇:redis使用

背景&#xff1a; 本文是教初学者如何正确使用和接入redis。 一、引入依赖 <!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><depen…

适配器模式实现stack和queue

适配器模式实现stack和queue 什么是适配器模式&#xff1f;STL标准库中stack和queue的底层结构stack的模拟实现queue的模拟实现 什么是适配器模式&#xff1f; 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff…

基于广义神经网络的网络入侵检测Matlab代码

1.案例背景 1.1 FCM 聚类算法 聚类方法是数据挖掘中经常使用的方法,它将物理的或抽象的对象分为几个种群,每个种群内部个体间具有较高的相似性,不同群体内部间个体相似性较低。模糊c均值聚类算法(Fuzzy C- Mean, FCM)是用隶属度确定每个元素属于某个类别程度的一种聚类算法&am…

Rspack 创建 vue2/3 项目接入 antdv(rspack.config.js 配置 less 主题)

一、简介 Rspack CLI 官方文档。 rspack.config.js 官方文档。 二、创建 vue 项目 创建项目&#xff08;文档中还提供了 Rspack 内置 monorepo 框架 Nx 的创建方式&#xff0c;根据需求进行选择&#xff09; # npm 方式 $ npm create rspacklatest# yarn 方式 $ yarn create…

AI 绘画Stable Diffusion 研究(十四)SD 图生图+剪映制作人物说话视频

大家好&#xff0c;我是风雨无阻。 前一篇&#xff0c;我们详细介绍了使用 SadTlaker制作数字人视频案例&#xff0c;感兴趣的朋友请前往查看:AI 绘画Stable Diffusion 研究&#xff08;十三&#xff09;SD数字人制作工具SadTlaker使用教程。 对于没有安装 SadTlaker 插件的朋友…

Java—实现多线程程序 | 入门

目录 一、前言 二、基本概念 进程 线程 三、Java多线程实现 java.lang.Thread类 获取线程名字及对象 获取main进程名 Thread currentThread() 四、线程优先级 设置优先级 一、前言 前期入门学习的代码中&#xff0c;全部都是单线的程序&#xff0c;也就是从头到尾…

leetcode 767. Reorganize String(重组字符串)

重新排列字符串s中的字母&#xff0c;使得任意两个相邻的字母都不相同。 思路&#xff1a; 让相邻字母不同&#xff0c;能想到的办法是先把相同的字母排列&#xff0c; 然后在相同字母的缝隙中插入另一种字母。 比如"aab", 先把"a a"排出来&#xff0c;再…

界面组件DevExpress Reporting——增强的SQL和实体框架数据源引入

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 本文总结了v23.1中针对DevExpress报表和BI Das…

UI位置与布局

UI位置与布局 引言 发现UGUI的RectTransform定位还是很复杂的&#xff0c;感觉有必要详细了解一下 RectTransform 继承自Transform。他的local position由其他几个变量控制。建议不要直接设置position 目的是为了实现UI自动布局。这套方法将绝对定位&#xff0c;相对定位&a…

vue和react学哪一个比较有助于以后发展?

前言 首先声明vue和react这两个框架都是很优秀的前端框架&#xff0c;使用的人群下载量上数量也是相当的庞大&#xff0c;这篇文章没有贬低或者攻击任何一个框架的意思&#xff0c;只在于根据答主的问题来对这两个框架做出对比&#xff0c;以方便大家更加清晰的了解到当下vue和…

设计模式--适配器模式(Adapter Pattern)

一、什么是适配器模式&#xff08;Adapter Pattern&#xff09; 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户端所期望的另一个接口。适配器模式主要用于解决不兼容接口之间的问题&#xff0c;使得原本…

分析系统 - 使用Python爬虫

在竞争激烈的市场环境中&#xff0c;了解和分析竞争对手的销售策略和市场表现对于企业的成功至关重要。本文将介绍如何利用Python爬虫建立低成本的销售竞争对手分析系统&#xff0c;探索其方法、工具和好处&#xff0c;并同时解决可能出现的问题。 销售竞争对手分析的目标是获取…

React基础入门之虚拟Dom

React官方文档&#xff1a;https://react.docschina.org/ 说明 重要提示&#xff1a;本系列文章基础篇总结自尚硅谷课程&#xff0c;且采用类式写法&#xff01;&#xff01;最新的函数式组件写法见高级篇。 本系列文档旨在帮助vue同学更快速的学习react&#xff0c;如果你很…

Android 13 - Media框架(6)- NuPlayer

上一节我们通过 NuPlayerDriver 了解了 NuPlayer 的使用方式&#xff0c;这一节我们一起来学习 NuPlayer 的部分实现细节。 ps&#xff1a;之前用 NuPlayer 播放本地视频很多都无法播放&#xff0c;所以觉得它不太行&#xff0c;这两天重新阅读发现它的功能其实很全面&#xff…

【80天学习完《深入理解计算机系统》】第十天 3.3 条件码寄存器【CF ZF SF OF】【set】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…