面试上机器-将当前时间以数码时钟的方式控制台显示(Java实现)

本文介绍了一种使用Java编程语言实现控制台数码时钟的方法。通过定义二维数组来表示数字0到9及冒号,并利用Calendar获取当前时间,最终以数码时钟的形式展示在控制台上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试上机器-将当前时间以数码时钟的方式控制台显示(Java实现)

前言

毕业近2年了,写下人生中的第一篇:博客,不喜轻喷,不断进步,希望通过文字记录我的程序人生 :

废话

此次记录一次面试上机题,将当前时间以数码时钟的方式控制台显示,题目需实现当效果如下图说是,当开始拿到题目确实一脸蒙蔽,什么鬼,这怎么实现,当时从南京赶到上海面试,这已是当天面试当第三家,当时面试当小伙伴大概有4-5个,都拿着这张上机题,等待着上机测试,当时想着待会还得赶高铁,一时也没想到什么思路就和面试官说没有思路先离开了(面试官估计也一脸无语),想想确实准备不够充分,后来回来了就思考着如何实现,下面是我想到都一种实现方法,希望小伙伴提供其他思路,需要做简历的程序员们推荐一下职徒简历一键生成简历方便快捷高效。
这里写图片描述

实现代码

控制台显示当前时间:

public class ShowDate {

    /**
     * 将0-9用二位数组01表示显示空或*
     * 
     * 例:2
     *   ***
     *     *
     *   ***
     *   *
     *   ***
     */
   
    static int [][] nub0={{1,1,1},{1,0,1},{1,0,1},{1,0,1},{1,1,1}};
    static int [][] nub1={{0,0,1},{0,0,1},{0,0,1},{0,0,1},{0,0,1}};
    static int [][] nub2={{1,1,1},{0,0,1},{1,1,1},{1,0,0},{1,1,1}};
    static int [][] nub3={{1,1,1},{0,0,1},{1,1,1},{0,0,1},{1,1,1}};
    static int [][] nub4={{1,0,1},{1,0,1},{1,1,1},{0,0,1},{0,0,1}};
    static int [][] nub5={{1,1,1},{1,0,0},{1,1,1},{0,0,1},{1,1,1}};
    static int [][] nub6={{1,1,1},{1,0,0},{1,1,1},{1,0,1},{1,1,1}};
    static int [][] nub7={{1,1,1},{0,0,1},{0,0,1},{0,0,1},{0,0,1}};
    static int [][] nub8={{1,1,1},{1,0,1},{1,1,1},{1,0,1},{1,1,1}};
    static int [][] nub9={{1,1,1},{1,0,1},{1,1,1},{0,0,1},{1,1,1}};
    //冒号
    static int [][] point={{0,0,0},{0,1,0},{0,0,0},{0,1,0},{0,0,0}};

    static int [][][] nubs={nub0,nub1,nub2,nub3,nub4,nub5,nub6,nub7,nub8,nub9};
    public static void main(String args[]){

        Calendar now = Calendar.getInstance();

        int day_tens=0,day_units=0,min_tens=0,min_units=0;

        day_tens=now.get(Calendar.HOUR_OF_DAY)/10;
        day_units=now.get(Calendar.HOUR_OF_DAY)%10;

        min_tens=now.get(Calendar.MINUTE)/10;
        min_units=now.get(Calendar.MINUTE)%10;


        int data [][][]={nubs[day_tens],nubs[day_units],point,nubs[min_tens],nubs[min_units]};

        for (int i=0;i<5;i++){

            for (int m=0;m<data.length;m++){


                for (int n=0;n<data[m][i].length;n++){

                    if (data[m][i][n]==0){
                        System.out.print(" ");
                    }else {
                        System.out.print("*");
                    }

                }

                System.out.print(" ");
            }

            System.out.println(" ");
        }

    }
}

实现结果:16:51
这里写图片描述

表盘式时钟,显import java.awt.*; import java.awt.event.*; import javax.swing.*; import sun.util.calendar.Gregorian; import java.util.Calendar; import java.util.GregorianCalendar; public class Clock extends JFrame implements ActionListener{ int x, y, x0, y0, r, h, olds_x, olds_y, oldm_x, oldm_y, oldh_x, oldh_y, ss,mm,hh,old_m,old_h,ang; final double RAD = Math.PI/180; public Clock(){ super("Java时钟"); setDefaultCloseOperation(3); Image image = getToolkit().getImage("clock.gif"); setIconImage(image); setSize(200,200); setBackground(Color.black); setLocation(300,150); setResizable(false); show(); int delay = 1000; //创建一个监听事件 ActionListener drawClock = new ActionListener(){ public void actionPerformed(ActionEvent evt){ repaint(); } }; //创建一个时间计数器,每一秒触发一次 new Timer(delay,drawClock).start(); } //实现ActionListener接口必须实现的方法 public void actionPerformed(ActionEvent evt){} //绘制图形 public void paint(Graphics g){ Graphics2D g2D = (Graphics2D)g; Insets insets = getInsets(); int L = insets.left/2, T = insets.top/2; h = getSize().height; g.setColor(Color.white); //画圆 g2D.setStroke(new BasicStroke(4.0f)); g.drawOval(L+40, T+40, h-80, h-80); r = h/2 - 40; x0 = 40 + r - 5 + L; y0 = 40 + r - 5 - T; ang = 60; //绘制时钟上的12个字 for(int i = 1;i <= 12;i ++){ x = (int)((r+10)*Math.cos(RAD*ang)+x0); y = (int)((r+10)*Math.sin(RAD*ang)+y0); g.drawString(""+i, x, h-y); ang -=30; } //获得现在的时间 Calendar now = new GregorianCalendar(); int nowh = now.get(Calendar.HOUR_OF_DAY); int nowm = now.get(Calendar.MINUTE); int nows = now.get(Calendar.SECOND); String st; if(nowh < 10)st = "0"+nowh; else st = ""+nowh; if(nowm<10)st += ":0"+nowm; else st += ":"+nowm; if(nows<10)st += ":0"+nows; else st += ":"+nows; //在窗体上显示时间 g.setColor(Color.pink); g.fillRect(L, T, 50, 28); g.setColor(Color.blue); g.drawString(st,L+2,T+26); //计算时间与度数的关系 ss = 90 - nows*6; mm = 90 - nowm*
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值