setfill()和setw()的Java等效方法是什么?

3

我有一个任务,需要我们创建一个带有toString()方法的用户类。toString方法应该返回一个包含用户所有信息的字符串。我们需要创建一个包含50个用户对象的数组,并在单独一行上打印每个用户的信息。问题是,我想要把所有内容都放在一个整齐的表格中,使得所有字符串长度相同。例如:

User Name          Password          Full Name                     Email
___________________________________________________________________________________________
shortUser          12345             John Smith                    jSmith@shortnames.com
thisUserIsLonger   1234567890        Smitty Werbenjagermanjensen   Smitty@thisOneIsLong.com

我希望保持表格中的所有内容都与上文对齐。在C++中,这很容易实现,因为我可以使用setw()函数根据字段的大小动态填充空格。在Java中是否有类似的方法呢?

2个回答

2

我知道这可能不是你正在寻找的确切内容,但如果你对printf及其类似物感到舒适,请看一下String.format()

。它可以让你以一种更加简单易懂的方式格式化字符串。请注意保留HTML标签。

0

有许多方法可存储数据并按您所需检索,例如:在 DBMS 中存储或对数据进行序列化。

由于数据量不大,我会选择序列化方式。

  1. 首先需要创建一个人员类。

    class Person{
    String name;
    String pwd;
    String email;
    String fullName;
    
    // 创建 getter 和 setter
    
    }
    
  2. 使用 setter 设置 Person 数据(您可以使用循环)

  3. 将 person 对象添加到 ArrayList 中

    arrayListObj.add(person1);
    
  4. 序列化 ArrayList

    try { System.out.println("正在序列化列表"); FileOutputStream fout = new FileOutputStream("list.dat"); ObjectOutputStream oos = new ObjectOutputStream(fout); oos.writeObject(arrayListObj); oos.close(); } catch (Exception e) { e.printStackTrace(); }

  5. 反序列化如下

     try {
         FileInputStream fin = new FileInputStream("list.dat");
         ObjectInputStream ois = new ObjectInputStream(fin);
         List<String> list = (ArrayList) ois.readObject();
    
         for (String s : list){
             System.out.println(s);
         }
    
         ois.close();
     }
     catch (Exception e) { 
         e.printStackTrace(); 
     }
    
  6. 反序列化后,您可能需要使用 迭代器 调用列表

以下是您可以遵循的基本步骤,以实现您的目标!

之后只需打印结果即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接