从用户输入连接循环

时间:2013-11-17 22:19:18

标签: java

我需要连接循环的输出。用户输入将确定它将持续多长时间。我正在尝试生成一个密码,生成一个随机数,然后将数字转换为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);
             }
         }
     }
   }
}
  • 示例输入:a或A
  • 第二个示例输入:数字1-14

示例输出: 一个 Ë b H 期望的输出:aebh

1 个答案:

答案 0 :(得分:0)

有几点:

  1. 你的for循环毫无意义。您将n初始化为input2然后循环,直到n == input2表示一次迭代

  2. 您的while循环毫无意义,并且只会在第一次迭代中将randNum设置为介于96和123之间时迭代一次

  3. 在循环之外声明您的StringBuilder。目前,您为每次迭代创建一个(只有一次),这意味着前一个String将丢失。然后在你的循环中调用append方法。

  4. 通过调用StringBuilder的toString()方法在循环后打印。

  5. 这样的事情

    StringBuilder sb = new StringBuilder()
    //Start Loop
        sb.append("Your character here");
    //End Loop
    System.out.println(sb.toString());