所以我正在为学校编写一个处理用户名和密码的程序。它应该提示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
我无法弄清楚如何打印星号并使用格式。
答案 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个空格,左对齐,并在其后添加标签。