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

使用for循环创建仅包含数字的密码

祁英哲
2023-03-14

我正在制作一个程序,从用户那里获取一个字符串来创建密码。但是,该密码至少需要8个字符或更多,并且只能包含字母(大写和小写)和数字。我已经这样做了,但是,当我在用户输入中输入一个空格(例如:“pass word”)或一个特殊的符号,如“%”或“

import java.util.Scanner;
public class Password
{
    public static void main(String[] args)
    {
        System.out.println("Enter your password");
        Scanner input = new Scanner(System.in);
        String pass = input.nextLine();
        System.out.println("Is the password valid? " + passwordCheck(pass));
    }
    
    public static boolean passwordCheck(String password)
    {   
        boolean pass = false;
        for(int i=0; i < password.length(); i++)
        {
        char c = password.charAt(i);
        if(password.length() >= 8)
        {
            if(c >= 48 && c <= 57)
            {
            pass = true;    
            }
            else if(c>= 97 && c<= 122)
            {
            pass = true; 
            }
            else if(c>=65 && c<=90)
            {
            pass = true;    
            }
            else if(c == 32)
            {
            pass = false;    
            }
        }    
        
        
        }
        return pass;

    }
}

共有1个答案

查锦程
2023-03-14

一旦遇到空格或任何其他特殊字符,您需要打破循环。

import java.util.Scanner;
public class Password
{
    public static void main(String[] args)
    {
        System.out.println("Enter your password");
        Scanner input = new Scanner(System.in);
        String pass = input.nextLine();
        System.out.println("Is the password valid? " + passwordCheck(pass));
    }
    
    public static boolean passwordCheck(String password)
    {   
        boolean pass = false;
        for(int i=0; i < password.length(); i++)
        {
        char c = password.charAt(i);
        if(password.length() >= 8)
        {
            // also you can directly mention the character instead of looking for its respective ASCII value
            if(c >= '0' && c <= '9')
            {
                pass = true;
            }
            else if(c>= 'a' && c<= 'z')
            {
                pass = true; 
            }
            else if(c>='A' && c<='Z')
            {
                pass = true;
            }
            else // loop will break if it encounters a space or any other 
 special character
            {
                pass = false;    
                break;
            }
        }    
        
        
        }
        return pass;

    }
}
 类似资料:
  • 我如何比较用户输入的这些数组呢?

  • 问题内容: 我正在尝试使用for循环和嵌套for循环制作圣诞树。为了做到这一点,我需要能够用*做一个金字塔。我已经尝试了无数次,但在制作时遇到了问题。这是我的代码: 我想做的是: 问题答案: 试试这个简单得多的代码: 它使用3个循环: 第一个表示行数, 第二个用于打印空间, 第三个用于打印星号。

  • 我正在尝试识别使用for循环提供的输入中是否有数字。我已经尝试了很长时间,甚至在Google的第二页上进行了搜索。我决定寻求一些帮助。到目前为止,我已经尝试了以下内容: 基本上,我试着扫描每个字母,然后分别测试它们是字母还是数字,这就是我遇到的问题,因为只扫描第一个字母。我也试着在循环中输入“c”。我怎么扫描每封信? 编辑:哎呀,那是个错误。我把它改成c=c 1,但它不起作用,我把它改回c,但它最

  • 问题内容: 我想创建一个构建增量数字数组的函数。 例如,我想要获得类似的东西: 该函数将接收两个参数:数组的起始编号(包括起始编号)和最终长度: 我知道如何使用for循环: 我要使用Java 8 Stream API,而不是使用for循环。有人知道如何使用Stream API做到这一点吗? 问题答案: 已经有一个内置方法: 以1为增量返回从开始(包括)到结束(不包括)的顺序。 如果要包含end元素

  • 问题内容: 目前,我正在执行在循环内执行闭包的代码。我想知道所有闭包何时完成执行。目前,我正在使用一个计数器,并在关闭完成时将其递增,然后将其与要执行的时间进行比较。代码如下 有没有计数器的更好的方法。谢谢。 问题答案: 您可以为此使用。它的工作就像计数信号灯一样。您可以通过调用来增加计数,并通过来减少计数。您可以使用以下命令安排闭包在计数达到0时执行:

  • 我试图研究我的数据中有零值的概率,我开发了一个代码,当一列数据为零时输出另一列数据的值,这正是我所需要的。但是,对于577BY29数据流中的每一列和其他28列都要这样做是很困难的,所以我决定创建一个for循环,在我有以下内容的地方为我这样做: 您可以看到,当输出数据帧有n=29列时,代码循环正确,但对于上面指定的条件,代码循环不正确。 请帮忙,谢谢!