编辑 - VERSION 第一篇文章是confusamagin。我的任务是创建一个密码提示程序。需要检查密码以查看其中是否至少有一个数字和一个字母。密码长度也必须介于6 - 10之间。
我的问题是试图弄清楚如何查看数字和字母是否存在密码。在检查密码区域,我不知道从哪里开始。我不知道怎么看它是否有一个字母和一个数字。我知道如何做或者使用for语句进行计数和检查,但它只是检查它是否包含所有字母或所有数字。
以下是我到目前为止......
import java.util.Scanner;
class Password {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//------ENTER A USERNAME
System.out.println("Welcome please enter your username and password.");
System.out.print("Username >>");
input.nextLine();
//------PASSWORD AUTHENTICATION BEGIN
String password = enterPassword();
while ( !checkPassword(password) ) {
System.out.println("Password must be 6 - 10 characters long!");
password = enterPassword();
}
//------PASSWORD VERIFY
String passwordverify = enterPassword();
while (!password.equals(passwordverify)){
System.out.println("ERROR - Passwords DO NOT MATCH Re-Enter Passwords Again");
password = enterPassword();
}
//------ACCEPT PASSWORD
System.out.println("Username and Password Accepted!");
}
//--ENTER PASSWORD STATEMENT
public static String enterPassword(){
String password;
Scanner input = new Scanner(System.in);
System.out.print("Password >>");
password = input.nextLine();
return password;
}
//--BOOLEAN CHECK PW
public static boolean checkPassword(String password){
int length;
length = password.length();
if (length < 6 || length > 11){
return false;
}
for (int i = 0; i < password.length();i++){
if (!Character.isLetter(password.charAt(i)))
return false;
}
return true;
}
}
答案 0 :(得分:5)
public static boolean checkPasswordLetter(String password){
for (int i = 0; i < password.length();){
if (!Character.isLetter(password.charAt(i))){
return false;
}
}
return true;
}
这里你没有增加变量i,需要用于i ++,或者你的循环是永远的,如果不是字母,同样和在checkPasswordDigit
答案 1 :(得分:1)
checkPasswordLetter
和checkPasswordDigit
仅在所有字符分别为字母/数字时才返回true。这是你的意思吗?
答案 2 :(得分:1)
首先......这不是Java没有循环或检查布尔值。 Java正在做你要告诉它的事情。
现在,您想要做的事情与 所做的事情不同。
您需要做的是:
public static void main(String[] args) {
// ...
String password = enterPassword();
while ( !isPasswordValid(password) ) {
password = enterPassword();
}
System.out.println("Username and Password Accepted!");
}
public static boolean isPasswordValid(String password) {
// return true if and only if password:
// 1. has 6-10 characters
// 2. contains at least one digit
// 3. contains at least one character
// print messages accordingly
}
答案 3 :(得分:0)
有两件事是错的。
您的信件检查在第一封非信件上失败。你的数字检查也发生了同样的事情。例如,您只想拒绝每个字符是否为非字母。所以逻辑错误。
你有三个循环。不好主意,因为如果你通过长度检查一次,它将再也不会被检查。考虑如果有人输入会发生什么:12345678。长度好,但没有字母。好的,现在输入:a1。长度未再次检查。
答案 4 :(得分:0)
import java.util.Scanner;
import java.util.*;
import java.lang.String;
import java.lang.Character;
public class CheckingPassword
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Please enter a Password: ");
String password = input.next();
if (isValid(password)) {
System.out.println("Valid Password");
} else {
System.out.println("Invalid Password");
}
}
public static boolean isValid(String password) {
if (password.length() < 9) {
return false;
}
else {
char c = 0 ;
int count=0;
System.out.println(password.length());
for (int i = 0;i<=password.length()-1; i++)
{
c = password.charAt(i);
System.out.println(c);
if (!Character.isLetterOrDigit(c))
{
return false;
}
else if (Character.isDigit(c))
{
count++;
if(count==3)
{
return false;
}
}
}
return true;
}
}
}
答案 5 :(得分:0)
import java.util.Scanner;
public class password{
public static void main(String[] args) {
// Create a Scanner
Scanner input = new Scanner(System.in);
// Prompt the user to enter a string
System.out.print("Enter a password ") ;
String s = input.nextLine();
if(isValid(s))
System.out.println(s + " is a valid password");
else
System.out.println(s + " is not a valid password");
}
public static boolean isValid(String s )
{
int i = 0,j=0;
if(s.length()>=8)
{
for(i=0;i<s.length();i++)
{
//if(Charcter.isLetter(s.charAt(i))||Digit.isLetter(s.charAt(i)))
if (Character.isLetterOrDigit(s.charAt(i)))
{
if(Character.isDigit(s.charAt(i)))
j++;
}
}
}
else
return false;
if(j>=2)
return true;
return false;
} }