我正在尝试用星号制作可缩放的三角形,并且我已经获得了完全功能的所有代码,并且正确地调整了大小,但它并没有输出三角形的第三面。欢迎任何建议。
import java.util.Scanner;
class Triangle {
public static void main(String[] args){
Scanner a;
a = new Scanner(System.in);
System.out.println("Welcome to the Scalable Triangle program!");
System.out.print("What size triangle do you want?");
int size = a.nextInt();
for (int j = 0; j < (size - 1); j++)
System.out.print(" ");
System.out.println("*");
//top line
for (int j = 1; j < (size - 1); j++)
{
for (int k = 0; k < (size - 1 - j); k++)
System.out.print(" ");
System.out.println("*");
}
for (int j = 0; j < size ; j++)
System.out.print("* ");
System.out.println(" ");
//bottom line
}
}
如果我用例如7:
回答问题,我希望输出这个 *
* *
* *
* *
* *
* *
* * * * * * *
现在它会输出:
*
*
*
*
*
*
* * * * * * *
答案 0 :(得分:1)
好的,所以我快速浏览一下,之所以不打印第三面是因为你没有打印代码。
您要查看的位是嵌套循环(您正在使用的第二个j计数器)。目前,嵌套循环(使用k计数器的循环)正在输出x之前的空格。
*
x
x
x
x
x
* * * * * * *
你想要做的是改变
System.out.println("*");
在该循环中不开始新行。
然后在此之后添加另一个循环以添加空格和星号。对于这个星号,您需要将其输出为新行。
由于这看起来像是一项家庭作业,我不会给你任何代码来做。这应该是足够的信息,以帮助您弄明白。请记住,始终一次跟踪代码1行,以便了解它正在做什么。
另外,请注意您可能添加的任何额外空格。如果这是一项家庭作业,您将希望输出与提供的输出完美匹配。
祝你好运。答案 1 :(得分:0)
尝试在行号,空格数,星数等之间得到一些数学关系,如下所示:
行号:第一颗星后的空格数。
*
1* *1
2* *3
3* *5
4* *7
5* *9
* * * * * * *
如果第一个星之后的空格数= x且行数= y。然后 x = 2y-1
代码:
public class Dia {
public static void main(String[] args) {
System.out.println(drawTriangle("*", 7));
}// main
// Assume equilateral triangle
public static String drawTriangle(String symbol, int side) {
StringBuilder sb = new StringBuilder();
int i = 0;
//Top line
for(i = 1; i < side; i++){sb.append(" ");}
sb.append(symbol);
sb.append("\n");
for(i = 1; i < side-1; i++){
for(int j = 1; j < side-i; j++){sb.append(" ");}
sb.append(symbol);
for(int k = 1; k <= (i * 2)- 1 ; k++){sb.append(" ");}
sb.append(symbol);
sb.append("\n");
}
//Bottom line
for(i = 0; i < side; i++){sb.append(symbol + " ");}
return sb.toString();
}
}
答案 2 :(得分:0)
这会对你有所帮助。
import java.util.Scanner;
class Triangle {
public static void main(String[] args){
Scanner a;
a = new Scanner(System.in);
System.out.println("Welcome to the Scalable Triangle program!");
System.out.print("What size triangle do you want?");
int size = a.nextInt();
for (int j = 0; j < (size - 1); j++)
System.out.print(" ");
System.out.println("*");
//top line
for (int j = 1; j < (size - 1); j++)
{
for (int k = 0; k < (size - 1 - j); k++)
System.out.print(" ");
System.out.print("*");
for (int m = 0; m < 2*j-1; m++){
System.out.print(" ");
}
System.out.println("*");
}
for (int j = 0; j < size ; j++)
System.out.print("* ");
System.out.println(" ");
//bottom line
}
}