Java 以数字作为行打印的三角形
我有一个任务要求我们创建一个三角形,看起来像这样,只有for循环,我目前无法将我的星号更改为这些数字,我可以将整个三角形转换为一个数字 下面是我打印三角形的代码:Java 以数字作为行打印的三角形,java,for-loop,Java,For Loop,我有一个任务要求我们创建一个三角形,看起来像这样,只有for循环,我目前无法将我的星号更改为这些数字,我可以将整个三角形转换为一个数字 下面是我打印三角形的代码: public class ExtraCredit_Bazar { public static void main ( String arg[] ){ for (int i=1; i<10; i += 2) { for (int k=0; k < (4 - i
public class ExtraCredit_Bazar {
public static void main ( String arg[] ){
for (int i=1; i<10; i += 2)
{
for (int k=0; k < (4 - i / 2); k++)
{
System.out.print(" ");
}
for (int j=0; j<i; j++)
{
System.out.print("*");
}
System.out.println("");
}
}
按如下方式编辑第二个内部循环:
int number = 1;
for (int j = 0; j < i; j++) {
System.out.print(number);
if (j < i / 2) {
number *= 2;
} else {
number /= 2;
}
}
public class ExtraCredit_Bazar {
public static void main ( String arg[] ){
for (int i=1; i<10; i += 2){
for (int k=0; k < (4 - i / 2); k++){
System.out.print(" ");
}
int number = 1;
for (int j=0; j < (i/2); j++){
System.out.print(number);
number *= 2;
}
for (int j= (i/2); j < i; j++){
System.out.print(number);
number /= 2;
}
System.out.println("");
}
}
}
据我所知,你不知道如何获得每个级别的正确数字。您可以这样做:
int number = 1;
for (int j = 0; j < i; j++) {
System.out.print(number);
if (j < i / 2) {
number *= 2;
} else {
number /= 2;
}
}
public class ExtraCredit_Bazar {
public static void main ( String arg[] ){
for (int i=1; i<10; i += 2){
for (int k=0; k < (4 - i / 2); k++){
System.out.print(" ");
}
int number = 1;
for (int j=0; j < (i/2); j++){
System.out.print(number);
number *= 2;
}
for (int j= (i/2); j < i; j++){
System.out.print(number);
number /= 2;
}
System.out.println("");
}
}
}
基本上,我已经将for循环打印“*”分为两个for循环。第一个打印一个数字,并在下一次迭代中将其乘以2。然后,当到达中间时,第二个循环进来,它将数字除以二,以使它再次变小。 < P>中间的数字应该容易得到。对于其余的数字,我建议先将字符串保存到数组中,然后再根据最后一个最长字符串的长度将其打印到字符串的中心
public class ExtraCredit_Bazar {
public static void main ( String arg[] ) {
int z = 1;
final int lineCount = 8;
String[] lines = new String[lineCount];
// do first iteration "by hand"
String left="1";
String right="1";
lines[0] = left;
for (int i=1; i<lineCount ; i++)
{
// update z here
// update left here
lines[i] = /*concat strings here (left, right and maybe spaces)*/;
// update right here Integer.toString(int) if necessary
}
final int maxStringLength = lines[lineCount-1].length();
for (int i = lineCount-2; i >= 0; i--) {
// add spaces to the left of lines[i] dependent on it's
// length and maxStringLength
// if you do it right, you can reuse the spaces you add to the
// left and don't have to create them from the start.
// Therefore the "backwards iteration".
}
// print the lines
}
您可能已经注意到缺少代码。如果你知道java和数学的基础知识,你应该能够自己轻松地解决这个问题。你是在问问题吗,或者试图雇佣一名程序员?抱歉,这是我第一次使用这个网站,我会编辑它。我在程序中使用了你的代码,它会打印三角形,但它会在顶部打印1,然后在重新启动时打印0。在每次运行for循环之前,你是否分配number=1?是的,它在主方法下面刚刚编译,工作完全正常。我编辑了我的帖子,这样你就可以看到整个代码了。我刚刚完成了我的写作目的:插入了我的两个for循环,而不是使用代码中的变量j的循环。我发现错误的原因是当我将代码放入我的程序时,我错误地键入了错误的内容谢谢你的帮助