两个String案例

我的思考:

用户名和密码可以分别用一个字符串保存,再与输入的字符串分别比较,先比较用户名,成功后再比较密码,注意比较字符串不能直接用 ' = ' ,而是要用String类的方法实现。

我的代码:

//User.javapackage com.stringlearning;public class User {private String name;private String code;public User() {}public User(String name, String code) {this.name = name;this.code = code;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}
}
//Run.javapackage com.stringlearning;import java.util.Scanner;public class Run {public static void run(){User user = new User("itheima","123456");int count = 2;while(true){System.out.println("请用户输入你的用户名:");Scanner sc = new Scanner(System.in);String name = sc.next();System.out.println("请用户输入你的密码:");String code = sc.next();if(user.getName().equals(name) &&user.getCode().equals(code)){System.out.println("欢迎进入系统!");break;}else{if(count == 0){System.out.println("请等待30秒在输入");break;}System.out.println("用户名或密码错误,请重试");count--;}}}
}
//Test.javapublic class Test {public static void main(String[] args) {Run r = new Run();r.run();}
}

反思:

上面的代码过于冗余了,增添了很多不必要的东西,像系统保存的字符串根本不需要单独创建一个类描述,直接用 " "表示即可。还有循环内部也太过复杂,完全不需要计数器count,直接for循环3次,中途达成条件退出就行了。


改进代码:

package com.stringdemo;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);for (int i = 0; i < 3; i++) {System.out.println("请输入用户名");String name = sc.next();System.out.println("请输入密码");String code = sc.next();boolean flag = judge(name,code);if(flag == true) {System.out.println("欢迎进入系统");break;}else{System.out.println("用户名或密码错误,请重试");}}}public static boolean judge(String name,String code){String logname = "itheima";String logcode = "123456";return name.equals(logname) && code.equals(logcode);}
}

案例二

我的思考:

该题的关键在于随机验证码的设置,有3种码:随机数字、随机大写字母、随机小写字母。

所以要想每一位随机地出现这3种不同的情况,需要Random随机值。

每一位是什么类型的数据确定后,接下来就是随机索引该位的值,然后用初始字符串+=串起来。

我的代码:

public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入验证码的位数");int num = sc.nextInt();String rs = code(num);System.out.println("验证码是:"+ rs);}public static String code(int num){String rs = "";Random r = new Random();for (int i = 0; i < num; i++) {int n = r.nextInt(3);switch(n){case 0: //数字rs += r.nextInt(10);break;case 1: //大写字母rs += (char)('a'+r.nextInt(26));break;case 2:rs += (char)('A'+r.nextInt(26));break;}}return rs;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——从键盘任意输人一个三位数的自然数,求该数个位、十位、百位上的数字之和

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i,ge,shi,bai;printf("输入一个三位数整数&#xff1a;\n");scanf("%d",&i);gei%10; //个位shii%100/10; //十位baii/100; //百位printf("个位:%d,十位:%d,百位:…

Bitget Wallet:使用 Base 链购买 ETH 的简明教程

Base 链是一种 Layer 2&#xff08;L2&#xff09;公链&#xff0c;它可以为用户提供以太坊&#xff08;ETH&#xff09;代币&#xff0c;而 Bitget Wallet 是一款多功能加密货币钱包&#xff0c;支持 Base 链以及其他主要区块链。

模块化之CJS, AMD, UMD 和 ESM

[[toc]] 模块化优点 防止命名冲突代码复用高维护性CJS, AMD, UMD 和 ESM 历史 ES6之前,JS一直没有自己的模块体系后来社区出现了CommonJS和AMD,CommonJS 主要用于服务器(Node)AMD 主要用于浏览器ES6引入了ESM到此,JS终于有了自己的模块体系,基本上可以完全取代CJS和AMD…

kubernetes集群编排——k8s调度

nodename vim nodename.yaml apiVersion: v1 kind: Pod metadata:name: nginxlabels:app: nginxspec:containers:- name: nginximage: nginxnodeName: k8s2 nodeName: k8s2 #找不到节点pod会出现pending&#xff0c;优先级最高 kubectl apply -f nodename.yamlkubectl get pod …

2023 全栈工程师 Node.Js 服务器端 web 框架 Express.js 详细教程(更新中)

Express 框架概述 Express 是一个基于 Node.js 平台的快速、开放、极简的Web开发框架。它本身仅仅提供了 web 开发的基础功能&#xff0c;但是通过中间件的方式集成了外部插件来处理HTTP请求&#xff0c;例如 body-parser 用于解析 HTTP 请求体&#xff0c;compression 用于压…

【Kotlin精简】第7章 泛型

1 泛型 泛型即 “参数化类型”&#xff0c;将类型参数化&#xff0c;可以用在类&#xff0c;接口&#xff0c;函数上。与 Java 一样&#xff0c;Kotlin 也提供泛型&#xff0c;为类型安全提供保证&#xff0c;消除类型强转的烦恼。 1.1 泛型优点 类型安全&#xff1a;通用允许…

unity Holoens2开发,使用Vuforia识别实体或图片 触发交互

建议&#xff1a;先看官方文档 我使用的utniy 版本&#xff1a;Unity 2021.3.6f1 官方建议&#xff1a;混合现实工具包简介 - 设置项目并使用手势交互 - Training | Microsoft Learn 配置了正确工具的 Windows 10 或 11 电脑Windows 10 SDK 10.0.18362.0 或更高版本安装了 U…

netty (二) netty原理详解

netty高性能架构设计 netty 写一个简单的demo 服务器端 package com.atguigu.netty.simple;import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import …

一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp

前言 大家有使用过.NET开发过OCR工具吗&#xff1f;今天给大家推荐一个基于百度飞桨封装的.NET版本OCR工具类库&#xff1a;PaddleOCRSharp。 OCR工具有什么用&#xff1f; OCR&#xff08;Optical Character Recognition&#xff09;工具可以将图像或扫描文件中的文本内容转…

SQL审计是什么意思?目的是什么?有什么好处?

很多刚入行的运维小伙伴对于SQL审计不是很了解&#xff0c;不知道其是什么意思&#xff1f;使用SQL审计的目的是什么&#xff1f;使用SQL审计的好处有哪些&#xff1f;这里我们大家就来一起聊聊&#xff0c;仅供参考哈&#xff01; SQL审计是什么意思&#xff1f; 【回答】&…

Docker实战

一、Docker安装 以下均以CentOS 7为例 1、安装Docker yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2、启动和校验 # 启动Docker systemctl start docker# 停止Docker systemctl stop docker# 重启 systemctl resta…

TensorFlow(1):深度学习的介绍

1 深度学习与机器学习的区别 学习目标&#xff1a;知道深度学习与机器学习的区别 区别&#xff1a;深度学习没有特征提取 1.1 特征提取方面 机器学习的特征工程步骤是要靠手动完成的&#xff0c;而且需要大量领域专业知识深度学习通常由多个层组成&#xff0c;它们通常将更简…