在Java中无法检查密码的方法

时间:2018-11-15 03:19:34

标签: java passwords

我正在尝试编写一种方法,该方法返回字符串是否是CodeHS中的有效密码。

必须至少八个字符,并且只能包含字母和数字。

在平地机中,它通过了除passwordCheck("codingisawesome")passwordCheck("QWERTYUIOP")以外的所有测试。

这是我到目前为止所拥有的:

public boolean passwordCheck(String password)
{
    if (password.length() < 8)
    {
        return false;  
    }
    else 
    {  
        char c;  
        int count = 0;   
        for (int i = 0; i < password.length(); i++) 
        {
            c = password.charAt(i);  
            if (!Character.isLetterOrDigit(c)) 
            {
                return false;  
            } else if (Character.isDigit(c)) 
            {
                count++;     
            }
        }
        if (count < 2)
        {  
            return false;  
        }
    }
    return true;  
}

如果有人可以提供帮助,我将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:3)

尝试使用模式的方法(这比循环更简单):

import React, { Component } from "react";
import ReactDOM from "react-dom";
import { Map, TileLayer } from "react-leaflet";
import "./styles.css";

class App extends Component {
  state = {
    center: [51.505, -0.091],
    zoom: 13
  };

  render() {
    return (
      <div>
        <Map center={this.state.center} zoom={this.state.zoom}>
          <TileLayer
            attribution='&amp;copy <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
            url="https://{s}.tile.osm.org/{z}/{x}/{y}.png"
          />
        </Map>
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);  

有关正则表达式的不错的教程(这是A-Z魔术的来源):http://www.vogella.com/tutorials/JavaRegularExpressions/article.html

答案 1 :(得分:1)

假设您的要求符合规定

  

必须至少八个字符,并且只能包含字母和数字

然后,无需计数数字。只需检查密码是否为最小长度,然后遍历每个返回假(如果不是字母或数字)的字符。喜欢,

public boolean passwordCheck(String password) {
    if (password != null && password.length() >= 8) {
        for (char ch : password.toCharArray()) {
            if (!Character.isLetterOrDigit(ch)) {
                return false;
            }
        }
        return true;
    }
    return false;
}

答案 2 :(得分:1)

测试失败,因为您的代码检查密码必须至少包含两位数:-

if (count < 2)
{  
    return false;  
}

并且您的测试字符串没有任何内容。删除这段代码,它应该可以工作。有关更好的方法,请参见其他答案。