模拟打印电子表
public class PrintTime {
public static void main(String[] args) {
//通过Timer()实现定时1秒任务
// Timer timer = new Timer();
// timer.schedule(new TimerTask() {
// @Override
// public void run() {
// Calendar calendar = Calendar.getInstance();
// Date date = calendar.getTime();
// printTime(date);
// }
// },1000,1000);
//线程sleep(1000)控制时间,实现定时
new Thread(new Runnable() {
@Override
public void run() {
while(true){
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
printTime(date);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
//打印时间方法
public static void printTime(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String time = sdf.format(date);
System.out.println(time);
//inputIntList存放每个数字代表的轨迹组合int[]
List<int[]> inputIntList = new LinkedList<int[]>();
for(int i=0;i<time.length();i++){
String a =String.valueOf(time.charAt(i));
//将数字转化为相应的轨迹组合int[],并加到inputIntList中
if(!a.equals(":")){
inputIntList.add(matchNumberGenerator(a));
}
}
//遍历inputIntList,打印数字
Iterator<int[]> iterator = null;
//5行,3列打印
for(int i = 0; i < 5; i++){
iterator = inputIntList.iterator();
while(iterator.hasNext()){
printNumber(iterator.next(),i*3,(i+1)*3);
}
System.out.println();
}
}
//将数字转化为相应的轨迹组合int[]
public static int[] matchNumberGenerator(String a){
int result[] = null;
switch(a){
//"_"-->2 " "-->0 "|"-->1
case "0":
result = new int[]{0,2,0,1,0,1,1,0,1,1,0,1,1,2,1};
//"' _ '| |'| |'| |'|_|".split(",");
break;
case "1":
result = new int[]{0,0,0,0,0,1,0,0,1,0,0,1,0,0,1};
//"' ' |' |' |' |".split(",");
break;
case "2":
result = new int[]{0,2,0,0,0,1,0,2,1,1,0,0,1,2,0};
//"' _ ' |' _|'| '|_ ".split(",");
break;
case "3":
result = new int[]{0,2,0,0,0,1,0,2,1,0,0,1,0,2,1};
//"' _ ' |' _|' |' _|".split(",");
break;
case "4":
result = new int[]{0,0,0,1,0,1,1,2,1,0,0,1,0,0,1};
//"' '| |'|_|' |' |".split(",");
break;
case "5":
result = new int[]{0,2,0,1,0,0,1,2,0,0,0,1,0,2,1};
//"' _ '| '|_ ' |' _|".split(",");
break;
case "6":
result = new int[]{0,2,0,1,0,0,1,2,0,1,0,1,1,2,1};
//"' _ '| '|_ '| |'|_|".split(",");
break;
case "7":
result = new int[]{0,2,0,0,0,1,0,0,1,0,0,1,0,0,1};
//"' _ ' |' |' |' |".split(",");
break;
case "8":
result = new int[]{0,2,0,1,0,1,1,2,1,1,0,1,1,2,1};
//"' _ '| |'|_|'| |'|_|".split(",");
break;
case "9":
result = new int[]{0,2,0,1,0,1,1,2,1,0,0,1,0,2,1};
//"' _ '| |'|_|' |' _|".split(",");
break;
}
return result;
}
//根据轨迹组合,打印相应数字
public static void printNumber(int[] numberArray, int arrayIndex, int arrayIndexEnd){
for(int i = arrayIndex; i < arrayIndexEnd;i++){
switch(numberArray[i]){
// "_"-->2 " "-->0 "|"-->1
case 0:
System.out.print(" ");
break;
case 1:
System.out.print("|");
break;
case 2:
System.out.print("_");
break;
}
}
System.out.print(" ");
}
}