欧洲高中生 发表于 2009-12-22 18:31

谁讲道题,*画圣诞树的。。。

本帖最后由 欧洲高中生 于 2009-12-22 18:34 编辑

Schreiben Sie eine Methode static void printBaum(int hoehe, int breite, int
stamm, char zeichen). Diese Methode soll einen Weihnachtsbaum ausgeben, der aus
dem Zeichen zeichen besteht, hoehe Zeilen besitzt und – beginnend mit einem Zeichen
– in jeder Zeile links und rechts breite Zeichen erg¨anzt. Der Baumstamm soll zentriert
in der Mitte ausgeben haben und die H¨ohe stamm haben. So sollen z.B. die Aufrufe
von printBaum(4,2,3,’*’) und printBaum(3,1,4,’J’) zu den folgenden Ausgaben
f¨uhren:


         *                                 J
       *****                               JJJ
    *********                        JJJJJ
*************                         J
         *                                    J
         *                                    J
         *                                    J

Nimm2 发表于 2009-12-22 21:53

参数弄清楚就好了
第一个是行数
第二个是每一行加几个符号
第三个是树干高度
最后一个是符号
其他就是一个for或者while的事了

欧洲高中生 发表于 2009-12-22 23:12

本帖最后由 欧洲高中生 于 2009-12-23 00:24 编辑

题目我也懂。就是写不完整。写个prozedur,然后用两个for schleife?

我就是总写不全,因为不会正确的走完所有规律。








class Weihnachtsbaum{

   static void printBaum (int hoehe, int breite, int
stamm, char zeichen) {

        for(int i=0; i<hoehe; i++) {
           for(int j=0; j<= ( (hoehe-1)*breite*2+1); j++) {
                if ( i>0 && (j >= (hoehe-1)*breite+1-i*j &&

j <= (hoehe-1)*breite+1+i*j) )
                   System.out.print(zeichen);
                else if(i==0 && j==(hoehe-1)*breite+1)
                   System.out.print(zeichen);
                else
                   System.out.print(" ");
           }
           System.out.println();
        }

        for(int a = hoehe; a>=hoehe && a< stamm; a++){
           for(int b=0; b<= ( (hoehe-1)*breite*2+1); b++){
              if(b==(hoehe-1)*breite+1)
                System.out.print(zeichen);
           }
           System.out.println();
        }
}


   public static void main(String args []){
   char c = '*';
   int ho = 4;
   int br = 2;
   int st = 3;

   printBaum(4,2,3,'*');

   }
}

Nimm2 发表于 2009-12-23 05:43

哪有那么折腾啊{:4_297:}

3个for2层嵌套
外层是层数h,i=0;i<h;i++
内层先是输出每层的空格,j=0;j<b*(h-i-1);j++
然后是树体符号,k=0;k<(1+2*b*i);k++

最后是树干
层数s,i=0;i<s;i++
每层先输出空格,j=0;j<b*(h-1);j++
然后输出一个符号 z

从头到尾,记得每层换行{:4_308:}

应该还有更简单的算法,半夜不想动脑子了{:4_283:}

欧洲高中生 发表于 2009-12-23 11:56

class Weihnachtsbaum{

   static void printBaum (int hoehe, int breite, int
stamm, char zeichen) {

        for(int i=0; i<hoehe+stamm; i++) {
           for(int j=0; j<= ( (hoehe-1)*breite*2+1); j++) {
                if ( i>0 && i<hoehe && (j >= (hoehe-1)*breite+1-i*j && j <= (hoehe-1)*breite+1+i*j) )
                   System.out.print(zeichen);
                else if( (i==0 || i>=hoehe) && j==(hoehe-1)*breite+1)
                   System.out.print(zeichen);
                else
                   System.out.print(" ");
           }
           System.out.println();
        }
}


   public static void main(String args []){
   char c = '*';
   int ho = 4;
   int br = 2;
   int st = 3;

   printBaum(4,2,3,'*');

   }
}

还是不完全对。。。

高手来写一下阿~~~~~~~~~~~~

abadebadu 发表于 2009-12-23 12:28

import java.util.Arrays;

public class Weihnachtsbaum {
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                char c = '*';
                int ho = 3;
                int br = 2;
                int st = 7;

                String z = repeatChar(c, br * ho * 2);
                String space = repeatChar(' ', br * ho);
                printBaum(0, ho, br, z, space);
                printBaum(br * (ho - 1), st, 0, z, space);
        }

        static void printBaum(int m, int hoehe, int breite, String z, String space) {

                for (int i = 0; i < hoehe; i++)
                        System.out.println(space.substring(0, (hoehe - i - 1) * breite + m)
                                        + z.substring(0, i * breite * 2 + 1));
        }

        private static String repeatChar(char zeichen, int len) {
                char[] chars = new char;
                Arrays.fill(chars, zeichen);
                return String.valueOf(chars);
        }
}

欧洲高中生 发表于 2009-12-23 12:40

sorry我还没学这么多。。。那个string 和print 还有array貌似不在这道题的范围。它不用klasse,只有prozedur...

谢谢你。

abadebadu 发表于 2009-12-23 13:08

sorry我还没学这么多。。。那个string 和print 还有array貌似不在这道题的范围。它不用klasse,只有prozedur...

谢谢你。
欧洲高中生 发表于 2009-12-23 12:40 http://www.dolc.de/forum/images/common/back.gif
循环太多比较晕,所以我试了试少用。
Arrays如果看不懂,就
                String z = "************************************";
                String space = "                                                ";
这样看好了。

傻麦兜 发表于 2009-12-23 15:43

·!%#··#……#¥·#……#·#!—*¥—¥*¥·#·*|O)(*

欧洲高中生 发表于 2009-12-23 16:37

........这题目的目的是for, while schleife!
页: [1] 2 3
查看完整版本: 谁讲道题,*画圣诞树的。。。