用制表符和星号画一棵 Java 圣诞树
Draw a Java christmas tree with tabs and asteriks
我需要画一棵 java 具有给定 n 行数的圣诞树,但不是通常这样画的:
*
***
*****
*******
但像这样,带有分隔标签:
*
* *
* * *
* * * *
我目前的代码是这样的:
public static void main(String[] args) {
int i =5;
for(;i!=0;i--) {
for(int j=0; j!=i; j++);
System.out.print("\t\t*");
我终于自己写了代码:
int x = 5;
for(int i=1; i<=x; i++)
{
for (int k=0; k<x-i; k++)
{
System.out.print("\t");
}
for (int j=0; j<i; j++)
{
System.out.print( "\t*\t" );
}
System.out.println("");
}
}
}
如果你想根据行数画一棵圣诞树,你可能需要这样的 Java 程序:
int rows = 5;
int i = ((rows-1)*2) + 1;
String pattern = "";
for(int j = 0; j <= (i/2); j++) {
String spaces = "";
for (int k = 0; k < ((i/2)-j); k++) {
spaces += " ";
}
pattern += spaces;
for (int k = 0; k < (i-(((i/2)-j)*2)); k++) {
pattern += "*";
}
pattern += spaces+"\n";
}
System.out.println(pattern);
您可以在其中调整变量行以调整圣诞树的高度。
我使用空格来缩进树,可以使用制表符并相对调整宽度。
当然,最好的方法是使用 printf 但这可能是创建您在第一个块中显示的圣诞树的最直接方法。
这会将星星排成行
public static void main(String[] args)
{
int n = 6;
int i = 0;
int pad = 7;
while (i < n)
{
String star = new String(new char[1 + i *2]).replace("[=10=]", "*\t");
String space = new String(new char[1 + pad]).replace("[=10=]", "\t");
System.out.printf(space + star + "\n");
++i;
--pad;
}
}
编辑
这将根据您的演示交替使用它们
public static void main(String[] args)
{
final int it = 5;
int pad = it;
int i = 0;
String space;
while (i < it) {
String star = new String(new char[i + 1]).replace("[=11=]", "*\t\t");
space = new String(new char[pad]).replace("[=11=]", "\t");
System.out.printf(space + star + "\n");
++i;
--pad;
}
}
完成 for 循环
public static void main(String[] args)
{
//final int it = 5;
int size;
size = 5;
for( int i = 1; i < size; ++i)
{
String star = "";
for (int p = size; p > i; --p)
{
star += "\t";
}
for (int j = 0; j < i; ++j)
{
star += "*\t\t";
}
System.out.println(star);
}
}
另一个只使用 2 个循环的解决方案
public static void main(String[] args)
{
//final int it = 5;
int size;
size = 5;
List<String> pad = new ArrayList<String>();
pad.addAll(Arrays.asList("\t","\t","\t","\t","\t"));
for( int i = 1; i < size; ++i)
{
String star = "";
//Pattern p = Pattern.compile("([)|(,)|(])");
star += pad.toString().replaceAll("\[|\]|,", "");
for (int j = 0; j < i; ++j)
{
star += "*\t\t";
}
pad.remove(pad.size()-1);
System.out.println(star);
}
}
我需要画一棵 java 具有给定 n 行数的圣诞树,但不是通常这样画的:
*
***
*****
*******
但像这样,带有分隔标签:
*
* *
* * *
* * * *
我目前的代码是这样的:
public static void main(String[] args) {
int i =5;
for(;i!=0;i--) {
for(int j=0; j!=i; j++);
System.out.print("\t\t*");
我终于自己写了代码:
int x = 5;
for(int i=1; i<=x; i++)
{
for (int k=0; k<x-i; k++)
{
System.out.print("\t");
}
for (int j=0; j<i; j++)
{
System.out.print( "\t*\t" );
}
System.out.println("");
}
}
}
如果你想根据行数画一棵圣诞树,你可能需要这样的 Java 程序:
int rows = 5;
int i = ((rows-1)*2) + 1;
String pattern = "";
for(int j = 0; j <= (i/2); j++) {
String spaces = "";
for (int k = 0; k < ((i/2)-j); k++) {
spaces += " ";
}
pattern += spaces;
for (int k = 0; k < (i-(((i/2)-j)*2)); k++) {
pattern += "*";
}
pattern += spaces+"\n";
}
System.out.println(pattern);
您可以在其中调整变量行以调整圣诞树的高度。 我使用空格来缩进树,可以使用制表符并相对调整宽度。 当然,最好的方法是使用 printf 但这可能是创建您在第一个块中显示的圣诞树的最直接方法。
这会将星星排成行
public static void main(String[] args)
{
int n = 6;
int i = 0;
int pad = 7;
while (i < n)
{
String star = new String(new char[1 + i *2]).replace("[=10=]", "*\t");
String space = new String(new char[1 + pad]).replace("[=10=]", "\t");
System.out.printf(space + star + "\n");
++i;
--pad;
}
}
编辑 这将根据您的演示交替使用它们
public static void main(String[] args)
{
final int it = 5;
int pad = it;
int i = 0;
String space;
while (i < it) {
String star = new String(new char[i + 1]).replace("[=11=]", "*\t\t");
space = new String(new char[pad]).replace("[=11=]", "\t");
System.out.printf(space + star + "\n");
++i;
--pad;
}
}
完成 for 循环
public static void main(String[] args)
{
//final int it = 5;
int size;
size = 5;
for( int i = 1; i < size; ++i)
{
String star = "";
for (int p = size; p > i; --p)
{
star += "\t";
}
for (int j = 0; j < i; ++j)
{
star += "*\t\t";
}
System.out.println(star);
}
}
另一个只使用 2 个循环的解决方案
public static void main(String[] args)
{
//final int it = 5;
int size;
size = 5;
List<String> pad = new ArrayList<String>();
pad.addAll(Arrays.asList("\t","\t","\t","\t","\t"));
for( int i = 1; i < size; ++i)
{
String star = "";
//Pattern p = Pattern.compile("([)|(,)|(])");
star += pad.toString().replaceAll("\[|\]|,", "");
for (int j = 0; j < i; ++j)
{
star += "*\t\t";
}
pad.remove(pad.size()-1);
System.out.println(star);
}
}