我的思考:
用户名和密码可以分别用一个字符串保存,再与输入的字符串分别比较,先比较用户名,成功后再比较密码,注意比较字符串不能直接用 ' = ' ,而是要用String类的方法实现。
我的代码:
//User.java
package 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.java
package 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.java
public 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;
}
}