我正在尝试编写一种方法,该方法返回字符串是否是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;
}
如果有人可以提供帮助,我将不胜感激。谢谢。
答案 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='&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; }
并且您的测试字符串没有任何内容。删除这段代码,它应该可以工作。有关更好的方法,请参见其他答案。