我必须制作一个用户输入3个字母的程序,然后程序用星号打印出来。 EX为1个字母: http://imgur.com/oPPO0Bs我可以创建一个数组,其中包含字母表中每个字符的形状,但我想知道是否有更简单的方法来链接它。是否有一些方法可以获得char和符号,并打印出该符号中char的形状。
答案 0 :(得分:10)
这是一个简洁的解决方案,使用优秀的旧AWT在Comic Sans中渲染你的文字,用于踢腿和咯咯笑声:
import static java.awt.image.BufferedImage.*;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
public class ASCIIRenderer {
public static void main(String[] args) throws IOException {
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(System.in))) {
String text = null;
while ((text = reader.readLine()) != null) {
// Dummy image to calculate bitmap width / height of your text
BufferedImage img = new BufferedImage(1, 1, TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
Font font = new Font("Comic Sans MS", Font.PLAIN, 24);
g2d.setFont(font);
FontMetrics fm = g2d.getFontMetrics();
int width = fm.stringWidth(text);
int height = fm.getHeight();
g2d.dispose();
// Real image
img = new BufferedImage(width, height, TYPE_INT_ARGB);
g2d = img.createGraphics();
g2d.setFont(font);
fm = g2d.getFontMetrics();
g2d.drawString(text, 0, fm.getAscent());
g2d.dispose();
for (int y = 0; y < img.getHeight(); y++) {
for (int x = 0; x < img.getWidth(); x++) {
System.out.print(0 == img.getRGB(x, y) ? " " : "**");
}
System.out.println();
}
}
}
}
}
(credits to most of the above code go to MadProgrammer)
运行它,键入类似ABC
的内容并获取此内容:
** ************ ************
****** **************** ****************
****** **** ****** ****** ****
******** **** ****** ****** ****
******** **** **** ****
****** **** **** **** ******
******** **** **** **** ******
****** **** **** ****** ****
******** ** **** ****** ****
****** **** **************** ****
****************** **************** ****
******************** **** ******** ****
********** **** **** ****** ****
****** **** **** **** **** ****
****** **** **** **** **** ******
****** ****** **** **** ****** ********
****** **** **** ********** ****************
**** **** **************** **********
************
答案 1 :(得分:4)
没有简单的方法可以做到这一点。 char
没有形状。 char
只是0
和65535
之间的数字,恰好在您打印时会显示为单个字符。
您必须为字母表中的每个字母设计自己的模式,并且使用数组将是最简单的方法。