从键盘任意输入0-9之间的任意一个数字,显示数字的电子格式

sj2008newlife 2008-08-18 09:46:29
从键盘任意输入0-9之间的任意一个数字,显示数字的电子格式,所谓电子格式也就是像电梯里的显示楼层的数字格式一样的格式,如何实现?

说明:获取键盘输入
Scanner input=new Scanner(System.in);
int a1=input.nextInt();
那象楼梯的显示楼层的电子格式怎么显示呢?

...全文
1197 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhongyi188 2010-08-02
  • 打赏
  • 举报
回复
做个记号!
借我那把枪吧 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhuwen9 的回复:]
好厉害...看不懂...
[/Quote]
有同感
tuerqizhou 2009-12-29
  • 打赏
  • 举报
回复
怎么还没有到13楼啊!!
zhuwen9 2009-12-28
  • 打赏
  • 举报
回复
理解了..研究下代码
zhuwen9 2009-12-28
  • 打赏
  • 举报
回复
好厉害...看不懂...
realreachard 2009-12-28
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
wdl542710518 2009-12-28
  • 打赏
  • 举报
回复
sillior 2008-10-11
  • 打赏
  • 举报
回复
具体的每一段的输出怎么整,特别是1、5段和2、4段或者说那个b、f段,和c、e段
  • 打赏
  • 举报
回复
原来的译码输出是:

#######       # ####### ####### #     # ####### #       ####### ####### #######
# # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # ####### ####### ####### ####### ####### # ####### #######
# # # # # # # # # # # # #
# # # # # # # # # # # # #
####### # ####### ####### # ####### ####### # ####### #


6 和 9 不符合国内常见的 LED 数字格式,不是很好看。

把译码方法 getLed 改了一下:

    /**
* 译码器
*
* 0
* #######
* # # 1
* 5 # 6 #
* #######
* # #
* 4 # # 2
* #######
* 3
*
* 0 表示 leds[0],若为 true 表示该 LED 显示,否则不显示
*
* @param num
* @return
*/
private boolean[] getLed(int num) {
boolean a = (num & 8) >>> 3 == 1;
boolean b = (num & 4) >>> 2 == 1;
boolean c = (num & 2) >>> 1 == 1;
boolean d = (num & 1) == 1;
boolean[] leds = new boolean[7];
leds[0] = a | (!a & c) |(!a & !b & !c & !d) | (!a & b & !c & d);
leds[1] = a | (!a & !b) | (!a & b & c & d) | (!a & b & !c & !d);
leds[2] = a | b | !c | d;
leds[3] = a | (!a & !b & c) | (!a & !b & !c & !d) | (!a & b & c & !d) |
(!a & b & !c & d);
leds[4] = (!a & c & !d) | (!b & !c & !d);
leds[5] = a | (!a & !b & !c & !d) | (!a & b & !d) | (!a & b & !c & d);
leds[6] = a | (!a & !b & c) | (!a & b & !c) | (!a & b & c & !d);
return leds;
}


这个就可以输出我们常见的七段 LED 数字了:

#######       # ####### ####### #     # ####### ####### ####### ####### #######
# # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # ####### ####### ####### ####### ####### # ####### #######
# # # # # # # # # # # # #
# # # # # # # # # # # # #
####### # ####### ####### # ####### ####### # ####### #######



附上真值表及逻辑式:


A, B, C, D 表示数字的各二进制位
a, b, c, d, e, f, g 表示 LED 的各段,为 1 时该段显示,为 0 时该段不显示

a
#######
# # b
f # g #
#######
# # c
e # #
#######
d

+---+---+---+---+---+ +---+---+---+---+---+---+---+
| | A | B | C | D | | a | b | c | d | e | f | g |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 0 | 0 | 0 | 0 | 0 | | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 1 | 0 | 0 | 0 | 1 | | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 2 | 0 | 0 | 1 | 0 | | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 2 | 0 | 0 | 1 | 1 | | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 4 | 0 | 1 | 0 | 0 | | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 5 | 0 | 1 | 0 | 1 | | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 6 | 0 | 1 | 1 | 0 | | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 7 | 0 | 1 | 1 | 1 | | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 8 | 1 | 0 | 0 | 0 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+
| 9 | 1 | 0 | 0 | 1 | | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
+---+---+---+---+---+ +---+---+---+---+---+---+---+


a = (A+B+C+^D)(A+^B+C+D)
b = (A+^B+C+^D)(A+^B+^C+D)
c = (A+B+^C+D)
d = (A+B+C+^D)(A+^B+C+D)(A+^B+^C+^D)
e = ^A^B^C^D + ^A^BC^D + ^ABC^D + A^B^C^D
f = (A+B+C+^D)(A+B+^C+D)(A+B+^C+^D)(A+^B+^C+^D)
g = (A+B+C+D)(A+B+C+^D)(A+^B+^C+^D)

化简后为:

a = A + ^AC + ^A^B^C^D + ^AB^CD
b = A + ^A^B + ^ABCD + ^AB^C^D
c = A + B + ^C + D
d = A + ^A^BC + ^A^B^C^D + ^AB^CD + ^ABC^D
e = ^AC^D + ^B^C^D
f = A + ^A^B^C^D + ^AB^D + ^AB^CD
g = A + ^A^BC + ^AB^C + ^ABC^D

这个反映了数字二进制位与 LED 各段之间的逻辑关系。
skyhits1921 2008-08-19
  • 打赏
  • 举报
回复
路过,学习.
  • 打赏
  • 举报
回复
学习。
jingweixml 2008-08-18
  • 打赏
  • 举报
回复
哈,我感觉应该说是“七段显示”
  • 打赏
  • 举报
回复
可以看看

http://topic.csdn.net/u/20080617/16/c8d6f711-a3a4-4689-af85-d0c6797d0f65.html

我在 13 楼的回复,利用数字电路将 10 进制数编码成 7 位的二进制数,来控制七段 LED 的显示。

代码中的最后一个方法 getLed 是程序化了的编码器,我也是从书上抄来转成 Java 代码的,呵呵。
具体的算法属于数字电路的知识,可以去看看介绍数字电路书中关于编码器和译码器的部分。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧