萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 2122|回复: 24

[问题求助] 谁讲道题,*画圣诞树的。。。

[复制链接]
发表于 2009-12-22 18:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
本帖最后由 欧洲高中生 于 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
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-12-22 21:53 | 显示全部楼层
参数弄清楚就好了
第一个是行数
第二个是每一行加几个符号
第三个是树干高度
最后一个是符号
其他就是一个for或者while的事了
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 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,'*');

   }
}
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-12-23 05:43 | 显示全部楼层
哪有那么折腾啊

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

从头到尾,记得每层换行

应该还有更简单的算法,半夜不想动脑子了
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 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,'*');

   }
}

还是不完全对。。。

高手来写一下阿~~~~~~~~~~~~
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 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[len];
                Arrays.fill(chars, zeichen);
                return String.valueOf(chars);
        }
}

评分

1

查看全部评分

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2009-12-23 12:40 | 显示全部楼层
sorry我还没学这么多。。。那个string 和print 还有array貌似不在这道题的范围。它不用klasse,只有prozedur...

谢谢你。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-12-23 13:08 | 显示全部楼层
sorry我还没学这么多。。。那个string 和print 还有array貌似不在这道题的范围。它不用klasse,只有prozedur...

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

循环太多比较晕,所以我试了试少用。
Arrays如果看不懂,就
                String z = "************************************";
                String space = "                                                  ";
这样看好了。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-12-23 15:43 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2009-12-23 16:37 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-2-12 06:17 , Processed in 0.077948 second(s), 20 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表