【问题标题】:Program which prompts the user to enter a password and checks conditions提示用户输入密码并检查条件的程序
【发布时间】:2017-04-19 13:36:50
【问题描述】:

所以我一直在开发这个程序,它会提示用户输入密码,但密码必须至少有 8 个字符长,并且只能包含字母和数字。这是我的代码:

import java.util.Scanner;

public class Password {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter a password: ");
    String password = input.nextLine();
    boolean valid = true;

    if (valid(password)) {
      System.out.println("Password accepted!");
    }
  }

  public static boolean valid(String password) {
    if (password.length() < 8) {
      System.out.println("Password must have at least eight characters.");
      return false;
    } else {
    char c;
    for (int i = 0; i < password.length(); i++) {
      c = password.charAt(i);
      if (password.matches("[0-9a-zA-Z]+")) {
        return true;
      } else {
        System.out.println("Password must only contain letters and digits.");
        return false;
      } 
    }
    return true;
    }
  }
}

我遇到的问题是,当我输入像 $$$ 这样的输入时,唯一的输出是“密码必须至少包含八个字符”,但我需要这个输出和“”密码只能包含字母和数字。”换句话说,我需要程序检查两个条件是否为假并显示两个输出。我该怎么做呢?

另外,如果您对如何改进我的程序有任何建议,那也会很有帮助。

谢谢!

【问题讨论】:

  • else 语句中添加一个条件来检查输入的长度。
  • @Mena 我会试试的,谢谢!

标签: java string eclipse if-statement boolean


【解决方案1】:

您可以简单地将有效变量从 main 方法移动到有效方法,并为每个未满足的条件将其设置为 false。只有在检查完每个条件后才返回。

public static boolean checkValid(String password) {
    boolean valid = true;

    if (password.length() < 8) {
        System.out.println("Password must have at least eight characters.");
        valid = false;
    }
    if(!password.matches("[0-9a-zA-Z]+")) {
        System.out.println("Password must only contain letters and digits.");
        valid = false;
    }

    return valid;
}

而且您不需要遍历密码的每个字符来匹配正则表达式。

【讨论】:

  • 我会这样做,但我的部分任务是将布尔变量设置为 true。
  • 您仍然将布尔变量设置为 true,但这样您实际上可以使用它。没有理由在你拥有它的地方拥有有效的变量,因为你没有对它做任何事情。
  • 噢,我明白你的意思了。非常感谢!
猜你喜欢
  • 2015-11-18
  • 2020-03-19
  • 1970-01-01
  • 2021-10-09
  • 2016-01-30
  • 2021-11-05
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多