m0_74943588 2023-04-08 17:52 采纳率: 100%
浏览 33
已结题

Java方法打印类似表格的内容

问答
如何用方法(继承以下知识的代码)打印出来图片这样的效果,省去横线,非常感谢!

img

  • 写回答

2条回答 默认 最新

  • a5156520 2023-04-08 19:52
    关注

    可以定义一个类来表示一个明星的信息,然后使用这个类对象的数组来存储6个明星的具体信息,再在类中定义一个静态方法来格式化打印明星数组对象数组的信息即可。

    代码如下(代码仅用于测试之用):

    参考链接:


    
    
    public class PrintTableTest {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            Star [] stars = new Star[6];// 创建可以存储6个明星信息的Star类对象数组
            // 为每个数组元素赋值,具体内容可以再行修改
            stars[0] = new Star(1,"张三","wx@126.com","2010-02-02");
            stars[1] = new Star(2,"李四","wxyza@163.com","1988-12-26");
            stars[2] = new Star(3,"王五六","lmnop@gmail.com","1984-06-12");
            stars[3] = new Star(4,"赵六","tuvwx@sina.com","1986-06-13");
            stars[4] = new Star(5,"丁七","Jklmn@gmail.com","1955-07-14");
            stars[5] = new Star(6,"方八九十","rstu@163.com","1983-05-17");
            
            // 调用Star类的静态方法格式化打印明星数组里的信息
            Star.printStarArray(stars);
        }
    
    }
    
    
    class Star{   // 定义明星信息的类
        
        private int id;
        private String name;
        private String email;
        private String birth; 
        
        // 如果还有其他属性需要定义,可以在这里添加上,再把有参的构造方法,以及增加新增属性的get和set方法,
        //再修改下toString方法(如果不使用这个方法,也可以不修改)
        
        
        public Star() {
            
        }
        
        
        public Star(int id, String name, String email, String birth) {
            super();
            this.id = id;
            this.name = name;
            this.email = email;
            this.birth = birth;
        }
    
        // 格式化打印明星数组信息的静态方法
        public  static void printStarArray(Star [] stars) {
            
            if(stars==null||stars.length==0) {
                return ;
            }
            
            
            
            // https://www.zhihu.com/question/63474120/answer/209460221
            // https://www.bbsmax.com/A/gAJGEZy4dZ/
            // 格式化打印6个明星的信息
            for(int i=0;i<stars.length;i++) {
                if(stars[i]!=null) {
                    if(i==0) {
                        // 表头
                        System.out.printf("%-8s %-7s\t%-18s%-12s\n","id","name","email","birth");
                    }
                    System.out.printf("%8d %-7s\t%-18s%-12s\n",
                    stars[i].getId(),stars[i].getName(),stars[i].getEmail(),stars[i].getBirth());
                }
            }
        }
    
        public int getId() {
            return id;
        }
    
    
        public void setId(int id) {
            this.id = id;
        }
    
    
        public String getName() {
            return name;
        }
    
    
        public void setName(String name) {
            this.name = name;
        }
    
    
        public String getEmail() {
            return email;
        }
    
    
        public void setEmail(String email) {
            this.email = email;
        }
    
    
        public String getBirth() {
            return birth;
        }
    
    
        public void setBirth(String birth) {
            this.birth = birth;
        }
    
    
        @Override
        public String toString() {
            return "明星信息 [编号:" + this.getId() + ", 姓名:" + this.getName() + ", 邮箱:" 
                    + this.getEmail() + ", 生日:" + this.getBirth() + "]";
        }
    
    
    }
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 已采纳回答 4月10日
  • 创建了问题 4月8日

悬赏问题

  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂