当前位置: 首页 > 知识库问答 >
问题:

Java循环-密码要求[重复]

姚才捷
2023-03-14

网站通常需要满足多个要求的密码。编写一个程序来检查输入字符串是否满足以下条件(每个都显示错误消息):

至少8个字符(太短)至少一个字母(缺少字母)至少一个数字(缺少数字)至少其中一个特殊字符:!、#、%(缺少特殊字符)输出正常,或所有相关的错误消息(按上述顺序)。如果输入字符串是“Hello ”,则输出为:

太短 缺少数字 缺少特殊提示:

为每个需求声明一个布尔变量。

使用 for 循环访问每个字符,如果满足,则将相应的布尔值设置为 true(尽管长度不同)。

使用函数字符。isLetter()和字符。isDigit()用于检测字符是字母还是数字。

到目前为止,我的Java程序都是这样,但我总是会出错。谢谢你的帮助。

  import html" target="_blank">java.util.Scanner;

  public class Main {
  public static void main(String[] args) {
  Scanner scnr = new Scanner(System.in);
  String newString;
  boolean atLeastEightCharacter;
  boolean atLeastOneLetter;
  boolean atLeastOneNumber;
  boolean atLeastOneSpecialCharacter;
  
  newString = scnr.nextLine();
  
  atLeastEightCharacter = false;
  atLeastOneLetter = false;
  atLeastOneNumber = false;
  atLeastOneSpecialCharacter = false;
  
  if (newString.length() >= 8) {
     atLeastEightCharacter = true;
  for (int i = 0; i <newString.length(); i++) {
     if (Character.isLetter(i)) {
        atLeastOneLetter = true;
     }
     if (Character.isDigit(i)) {
        atLeastOneDigit = true;
     }
     if (newString(i) == '!' || newString(i) == '#' || newString(i) 
        == '%') {
        atLeastOneSpecialCharacter = true;
     }
  }
  }
  
  if (atLeastEightCharacter == false) {
     System.out.println("Too short");
  }
  if (atLeastOneLetter == false) {
     System.out.println("Missing letter");
  }
  if (atLeastOneDigit == false) {
     System.out.println("Missing number");
  }
  if (atLeastOneSpecialCharacter) {
     System.out.println("Missing special");
  } 
  }
  }

共有1个答案

陶超
2023-03-14

问题是你检查的不是字符串的符号,而是索引,变量< code>i不是char,而是整数索引

这是固定版本:

for (int i = 0; i <newString.length(); i++) {
    char c = newString.charAt(i);

    if (Character.isLetter(c)) atLeastOneLetter = true;
    if (Character.isDigit(c)) atLeastOneDigit = true;
    if (c == '!' || c == '#' || c == '%') atLeastOneSpecialCharacter = true;
}
 类似资料:
  • 我用passport进行身份验证。js。然而,在创建会话之后,在每次AJAX请求之后,RoboForm都会请求保存密码。不知道是什么原因。 接受:/ 接受-编码:gzip,放气,sdch,br 接受-语言:en-US,en;q=0.8 连接:保持活力 Cookie:connect.sid=s:jvQRBQY... 主机:localhost:3000 如果-无-匹配:W/"140-360389655

  • 我有一个Django应用程序,可以从AWS秘密管理器中获取DB秘密。它包含所有DB参数,如用户名、密码、主机、端口等。当我在EC2上启动Django应用程序时,它会成功地从秘密管理器中检索秘密并建立一个DB连接。 现在的问题是我有一个密码循环策略设置30天。为了测试流量,目前,我已经设置为1天。每次密码旋转,我的Django应用程序就会失去DB连接。因此,我必须手动重新启动应用程序,以允许应用程序

  • 我目前有两个循环,一个获取时间戳,另一个while循环根据时间戳查找映射信息并以某种方式输出。 我的问题是我目前正在循环浏览一个文本,并希望它在第二个循环的isdo="N"时再次从头开始读取文件,但是,情况似乎并非如此。 迄今为止的代码:

  • 我正在编写一个python游戏,它有以下功能可以向用户询问。 最多可以有4名玩家(最少1名玩家,最多4名玩家) 它会问玩家的名字。如果名称已存在,程序将提示“名称已在列表中”,并要求再次输入名称 如果播放器在播放器名称输入中输入空字符串,它将退出。 它会询问玩家想要玩多少n个随机数字(使用randint(开始,停止)。最多只允许3位数字 我知道我必须使用