0

所以我正在为学校编写一个处理用户名和密码的程序。它应该提示 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

我不知道如何让星号打印出来并使用格式。

4

1 回答 1

1

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

你的循环应该是这样的。它未经测试,但您可以解决它以获得所需的输出。

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 个空格,左对齐,并在其后添加一个制表符。

于 2012-11-16T05:42:01.000 回答