Java用户名密码阵列替换为星号

时间:2012-11-16 05:36:51

标签: java arrays string-formatting

所以我正在为学校编写一个处理用户名和密码的程序。它应该提示3个用户的用户名和密码。然后显示密码长度的用户名和星号。我有几乎所有我需要的东西,包括如何在同一行上打印密码长度的星号:

//int asterix =password[x].length();
 * for (int y=0; y<asterix ;y++){
 *                  System.out.print("*");
 *              }
 */

我的问题是我需要像这样格式化输出:

USER ID                 PASSWORD

howdyDoodie              ***********
batMan                   ************
barneyRubble             ************

到目前为止,我的代码看起来像这样:

  public class test{

    /**
     * 
     * @param args
     */





    public static void main(String[] args){
        String[] user = new String[3];
        String[] password = new String[3];

        // Prompt for Username and Password and loop 3 times adding to next value in array
        for(int x=0; x<=2;x++){

        user[x] = JOptionPane.showInputDialog(null,"Enter Username: ");
        password[x] = JOptionPane.showInputDialog(null,"Enter Password: ");
        // Test number of loops
        //System.out.println(x);

        }

        //Field Names Print

        System.out.printf("\n%s\t%10s","Username","Password");

        for(int x=0; x<=2;x++){
            System.out.printf("\n%s\t%15s",user[x],password[x]);

        }

     System.exit(0);

    }
    /*
     * //int asterix =password[x].length();
     * for (int y=0; y<asterix ;y++){
     *                  System.out.print("*");
     *              }
     */

} // End of Class

我无法弄清楚如何打印星号并使用格式。

1 个答案:

答案 0 :(得分:1)

您需要一个嵌套循环。移动for循环打印所有用户的for循环打印用户名和密码内的asterisk (*)

你的循环应该是这样的。它没有经过测试,但您可以通过它来获得所需的输出。

System.out.printf("%-20s\t%-10s","Username","Password");

for(int x=0; x<=2;x++) {

     System.out.printf("%-20s\t",user[x]);  // Just print user here

     int asterix =password[x].length();
     for (int y=0; y<asterix ;y++){  // For the length of password 
         System.out.print("*");      // Print *
     }
     System.out.println();   // Print newline to move to the next line
}

%-20s\t表示username占用20个空格,左对齐,并在其后添加标签。