我需要连接循环的输出。用户输入将确定它将持续多长时间。我正在尝试生成一个密码,生成一个随机数,然后将数字转换为ASCII字符(当前所有小写字符)。而不是有多个for()
如何根据用户输入将输出连接成一个字符串?
import java.util.Random;
import java.util.Scanner;
public class Password
{
public static void main (String[] args)
{
int randNum=0;
int min=97;
int max=122;
int az=0;
String b="";
String c="";
Scanner in= new Scanner (System.in);
Random randNumlist= new Random();
System.out.println("lowercase letters [a]");
String input= in.next();
System.out.println(" how many characters (max 14)");
int input2=in.nextInt();
if ( input.equalsIgnoreCase("A"))
{
while(!(randNum>=96 && randNum<=123))
{
for (int n=1; n <=input2; n++)
{
randNum= randNumlist.nextInt((max-min)+1)+min;
az =+randNum;
char p= (char)az;
b = new StringBuilder().append("").append(p).toString();
System.out.println(b);
}
}
}
}
}
示例输出: 一个 Ë b H 期望的输出:aebh
答案 0 :(得分:0)
有几点:
你的for循环毫无意义。您将n
初始化为input2
然后循环,直到n == input2
表示一次迭代
您的while
循环毫无意义,并且只会在第一次迭代中将randNum
设置为介于96和123之间时迭代一次
在循环之外声明您的StringBuilder
。目前,您为每次迭代创建一个(只有一次),这意味着前一个String将丢失。然后在你的循环中调用append方法。
通过调用StringBuilder的toString()
方法在循环后打印。
这样的事情
StringBuilder sb = new StringBuilder()
//Start Loop
sb.append("Your character here");
//End Loop
System.out.println(sb.toString());