根据用户给定一个数的大小用java输出一个M形状 要求:M的大小谁随用户输入的数值大小改变。谢谢解答!!!

解决方案 »

  1.   

    和那个输出奇数和偶数的原理是一样的,两个倒V形状组合就能得到。
    package com.walkman.suanfa;/**
     * 作者: walkman 
     * 日期: 2011-7-11 
     * 内容: 根据输入的整数来输出一组相应的M形状的字符
     */
    public class InputFigure { public static void main(String[] args) {
    InputFigure test = new InputFigure();
    test.printTriangle(2);
    test.printTriangle(3);
    test.printTriangle(5);
    test.printTriangle(8);
    } private void printTriangle(int size) {
    if (size < 3) {
    System.out.println("大小不能小于3");
    return;
    } // 画出图形
    for (int i = 0; i < size; i++) { // i代表星号的行数
    drawFigure(i, size);
    drawFigure(i, size);
    System.out.println("");
    } // 画出分隔符
    for(int line = 0; line < 4 * size; line++){
    System.out.print("-");
    }
    System.out.println("");
    }

    // 画出一个V字形的图案,在printTriangle方法中运行两次,形成M的形状。
    private void drawFigure(int num, int size){
    for (int pSpace = num; pSpace < size - 1; pSpace++) {
    System.out.print(" ");
    }
    // 输出星号
    System.out.print("*"); // 输出星号之间的空格
    for (int midSpace = 0; midSpace < (2 * num) - 1; midSpace++) {
    System.out.print(" ");
    } // 再输出星号(第二行以后)
    if (num >= 1) {
    System.out.print("*");
    } // 输出第二个星号以后的空格
    for (int afSpace = size - num; afSpace > 0; afSpace--) {
    System.out.print(" ");
    }
    }
    }
      

  2.   

    我想原始形狀確定后,要想控制大小就在其基礎上按比例放大,當然在某個方向上最小比例是1,且必須是整數倍(不可能半個字母表示)
    比如橫向擴大一倍就是原來的: M => MM縱向: M => M
          M整體擴大一倍: M => MM
          MM
      

  3.   

    代码就是 JDK 中自己的:import java.awt.Font;
    import java.awt.FontMetrics;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;public class Main {    public static void main(String[] args) {
            BufferedImage image = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB);
            Graphics2D g = image.createGraphics();
            g.setFont(new Font("Times New Roman", Font.PLAIN | Font.BOLD, 20));
            
            int h = image.getHeight();
            int w = image.getWidth();
            
            FontMetrics metrics = g.getFontMetrics();
            
            g.drawString("K L M N O", 0, h - metrics.getDescent() - metrics.getLeading());
            int[] p = image.getRGB(0, 0, w, h, new int[w * h], 0, w);
            for (int i = 0; i < h; i++) {
                for (int j = 0; j < w; j++) {
                    System.out.print(p[i * w + j] == -1 ? "#" : " ");
                }
                System.out.println();
            }
        }
    }
      

  4.   

    火龙果大大的那个输出很早就见过,思路全然不同是先用java的绘图接口写出那几个字,然后对生成的图片进行像素的点阵分析最后输出的,所以输出和文字完全一样。
      

  5.   

    呵呵,代码在下面:void main(int a)
    {
     char* x = "bB_Z#^B_Z#h1AI.BMB5#VB2>2:B>>=6#RB@1.>>L12#NB6N:>BN#JFHL1@D6#";
     while(a = *x / 4) a -= 8, printf("n%*s" + !!a, a, "_/_/_/" + *x++ % 4 * 2);
     
    }