2015-11-07 26 views
-2

我必须做一个程序,用户输入3个字母,然后程序打印出星号。 EX为1个字母: http://imgur.com/oPPO0Bs很显然,我可以用字母表中的每个字符的形状组成一个数组,但我想知道是否有更简单的方法来做这件事。是否有一些方法可以获取char和一个符号,并在该符号中打印出char的形状。需要采取一个字符,并打印出星号的形状java

+0

嗯......是的,没有。您可以包含FreeType(或者,在Windows上将该字符绘制到位图中),但这听起来超出了您要求做的事情。您自己可以在网上搜索预先制作的列表,而不是自己创建位图数组。当然,没有办法可以准确地完成*你的任务是写什么的! – usr2564301

回答

4

有没有简单的方法来做到这一点。 A char没有形状。 A char只是一个介于065535之间的数字,在您打印时恰好显示为单个字符。

你将不得不为每个字母的字母设计自己的模式,使用数组将是最简单的方法。

+0

是的,我想我必须这样做,我知道我可以这样做,它只是乏味。 –

+1

@AnatoliySokolov我同意这很乏味。我会试着用5个英文字母来证明你能做到,然后告诉你的教授你感到无聊。 –

+3

@PaulBoddington总的矫枉过正。用户只能输入** 3 **字母,那为什么要用5?你想加分吗,让我们其他人看起来不好? OP已经设计了'D',所以设计一个'A',并且显示它可以打印'DAD',或者'ADD',这就是你停在那里的原因。大声笑*(哎呀,不能打印,但)* – Andreas

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并获得这样的:

    **     ************       ************ 
       ******     ****************     **************** 
       ******     ****  ******    ******  **** 
       ********     ****   ******   ******   **** 
       ********     ****   ****   ****     
      ****** ****    ****   ****   ******     
      ******** ****    ****   ****  ******     
      ****** ****    ****   ******  ****      
     ********  **    ****  ******   ****      
     ******  ****    ****************   ****      
     ******************    ****************   ****      
     ********************    ****  ********  ****      
    **********   ****   ****   ****** ****      
    ******    ****   ****    **** ****    **** 
    ******    ****   ****    ****  ****   ****** 
    ******    ******   ****   ****  ******  ********  
    ******     ****   ****  **********   ****************  
    ****     ****   ****************    **********   
             ************           
+0

这是相当辉煌。加上一个努力和速度。 –

相关问题