如何用JAVA编写个8位密码生成器(只能是大小写字母和数字)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用JAVA编写个8位密码生成器(只能是大小写字母和数字)相关的知识,希望对你有一定的参考价值。

我只学了一周,相当菜鸟,这是老师出的题目 我先说下我的思路,

前面的定义不写了 直接写核心代码
int j=0,n=0,i=0;
Srting str=" ";
char ch ;
for (j=0;j<=7;j++)
n=Math.random()*122;
i=(int)n
if ((i>=48 && i<=57) || (i>=65 && i<=90) || (i>=97 && i<=122))
ch=(char)i; // 我有2个问题,这样写,出了null 也会被显示出来,为什么不能定义ch!=null;
//我前面定义的j 是str的位数,从0到7,我要把算出来的ch 给str的每一位
//就是str.charAt(j)=ch,连续出8次,形成8位密码,但不知道输出为null时怎么办,
//可能 我表达的不太清楚 ,大家可以留言,不知道我的思路是不是可行,是否有好的方法;

还有一题 1,2,3,4 四个数 组成一个3位数(如123),3个位置不可以相等(112不行),请输入所有结果,(好像是24种结果吧)
没啥思路,大致就这些了 ,

大家有什么好的 java 新手的交流平台也可以告诉 我 ,谢谢拉,先送上100分
谁能告诉 我把一个字符ch 给 某个字符串的某一位 这个功能 如何实现啊,

1.先回答你第一个问题:ch!=null这句语句肯定是错误的,因为ch表示的是一个字符,null表示的是空对象,所以如果写ch!=null,编译的时候肯定是要报错的,你必须写成ch!=' ',前面的为英文引号,引号中间有一个空格。
2.回答你第2个问题,就是怎么使str!=null,你可以在for语句中加一个判断,假如ch== ' ',则这次循环不算,则结果中肯定不会出现null的,见下面的代码。
int j=0,n=0,i=0;
Srting str="";
char ch;
for(j=0;j<=7;j++)
n=Math.random()*122;
i=(int)n;
if((i>=48 && i<=57)||(i>=65 && i<=90) || (i>=97 && i<=122))
ch=(char)i;

//判断来了
else
j=j-1; //即是这次循环不算,则不可能出现null了




3.回答你第三个问题:如何输出这24个数呢?见下代码
for (int i = 1; i < 5; i++)
for (int j = 1; j < 5; j++)
if (i!=j)
for (int j2 = 1; j2 < 5; j2++)
if (j2!=j&&j2!=i)
System.out.println(""+i+j+j2); //这句话把数字转换为字符串,
//便于输出







4. 我对你的意思理解为:用一个字符替换指定位的字符,如果是这样的话,replace不能够做到。
replace的方法原型为:
String replace(char oldChar, char newChar) ;
意思为:返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
如果要完成楼主的要求,请看以下代码,我写了一个替换函数:
String tihuan(String string,int index,char ch)
//index表示你要替换的字符位置,第一位为1
char[] chs=string.toCharArray();
chs[index-1]=ch;
String string1=new String(chs);
return string1;


//多多指教啊
//希望对你有帮助啊
参考技术A 产生8位密码的程序刚刚给你写的
package com.app;

import java.util.Random;

public class Create8bitPassword

public String create8p()
StringBuffer password = new StringBuffer();
while (password.length() < 8)
int x = getRandomNumber();
if (x >= 0 && x <= 9)
String n = "" + x;
password.append(n);

if (x >= 65 && x <= 90)
char c = (char) x;
password.append(c);




return new String(password);


public int getRandomNumber()

Random rand = new Random();
int n = rand.nextInt(91);
return n;


public static void main(String args[])

// System.out.println((int) 'A');
// System.out.println((int) 'Z');

Create8bitPassword ct = new Create8bitPassword();
System.out.println(ct.create8p());



另外,一个字符ch 给 某个字符串的某一位,你查一查String 类的replace方法就知道该怎么做了 ,学习靠主动探索 给你提示到这里吧

您如何用Java编写命令提示符?

背景

我从Java应用程序启动了命令提示符。现在,我想将命令输入到刚刚生成的命令提示符中。您如何在Java程序刚刚生成的提示中运行命令?

我尝试过的事情

我的代码创建一个启动命令提示符的过程。然后,它获取进程的OutputStream尝试对其进行写入。但是我看不到有任何变化。它应该只是更改目录,然后在新目录中运行一系列命令。

// Block that makes new command prompt
List<String> commands = new ArrayList<String>();
commands.add("cmd.exe");
commands.add("/c");
commands.add("start");
commands.add("cmd.exe");

// Block that creates a writer to write to new command prompt
ProcessBuilder pb = new ProcessBuilder(commands);
Process p = pb.start();
OutputStream os = p.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os)); 

// Block that actually writes the commands
writer.write(String.format("cd %s
", PATH);
writer.write(OTHER_COMMANDS); // I'm ommiting the other commands because there's a lot
writer.flush();
writer.close();

我不确定为什么命令没有写到弹出的命令提示符中。我看到一个新的命令提示符弹出,但目录从其开始位置未更改。如何在生成的提示中输入命令?

答案
在Java中,我不知道类似的API,实际上可能需要使用JNI或JNA才能访问您需要使用的Windows API。您使用的功能(通过JNI或JNA)将与该其他答案中引用的相同https://docs.microsoft.com/en-us/windows/console/allocconsole。因此,这是一种方法,但是,如果您选择采用该方法,则对如何使用JNI或JNA的完整描述不在这里。
另一答案
您正在写入

first

另一答案
Windows cmd.exe实际上不是纯shell。它是一个终端仿真程序(屏幕上出现的黑色窗口),它是外壳的[[

and

以上是关于如何用JAVA编写个8位密码生成器(只能是大小写字母和数字)的主要内容,如果未能解决你的问题,请参考以下文章

如何用jqueryEasyUi框架验证密码只能输入六位包含数字字母?

如何用EXCEL随机生成一定位数的字符串

如何用java生成有规律的字符串?

在26个大小写字母(52个),以及9个数字组成的字符列表中, 随机生成10个8位密码.

#在26个大小写字母(52个),以及9个数字组成的字符列表中,随机生成10个8位密码

如何用python生成随机的15行6列的随机数据