谁讲道题,*画圣诞树的。。。
本帖最后由 欧洲高中生 于 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 参数弄清楚就好了
第一个是行数
第二个是每一行加几个符号
第三个是树干高度
最后一个是符号
其他就是一个for或者while的事了 本帖最后由 欧洲高中生 于 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,'*');
}
} 哪有那么折腾啊{: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:} 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,'*');
}
}
还是不完全对。。。
高手来写一下阿~~~~~~~~~~~~ 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);
}
} sorry我还没学这么多。。。那个string 和print 还有array貌似不在这道题的范围。它不用klasse,只有prozedur...
谢谢你。 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 = " ";
这样看好了。 ·!%#··#……#¥·#……#·#!—*¥—¥*¥·#·*|O)(* ........这题目的目的是for, while schleife!