我正准备面试。 我必须使用7X7 2D阵列制作等边三角形。
我尝试了下面的代码,但我很困惑,我应该怎么做我的代码,以便我可以做一个等边三角形?
package learn.basic.corejava;
public class ArrayExample {
public void two_equilateral_D()
{
System.out.println("Demonstrating 2D 3X3 Equal trngle");
int twoD[][]=new int[7][7];
int i,j,k=0;
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
twoD[i][j]=k>9?0:k;
k++;
}
}
for(i=0;i<7;i++)
{
for(j=i+3;j<7;j++) {
System.out.print(twoD[i][j]+" ");
}
System.out.println("");
}
}
public static void main(String args[] )
{
ArrayExample obj=new ArrayExample();
//System.out.println("Average value of the array="+obj.calculate_average());
obj.two_equilateral_D();
}
}
但是这段代码给了我输出
Demonstrating 2D 3X3 Equal trngle
3 4 5 6
0 0 0
0 0
0
此类所需的输出
答案 0 :(得分:0)
我认为特殊条件(硬部分)不应该处于循环条件中,而是处于嵌套循环内的新条件中。
您需要迭代整个矩阵,而不是限制嵌套循环(使用变量j
)。
在循环内部,添加if()
语句以检查是要显示值还是仅显示空格。这是你应该做的工作。
代码应如下所示:
for (int i = 0; i < 7; i++) {
for (int j = 0; j < 7; j++) {
if (condition) {
System.out.print(twoD[i][j]+" ");
} else {
System.out.print(" "); // note the extra space here to make up for a number
}
}
System.out.println("");
}
编辑:你从根本上改变了你的问题,现在有两个问题:
您必须使用Pascal的三角形值初始化矩阵。
您现在发布的输出不是控制台输出,您必须选择放置空格的位置以及如何处理2位数字。最简单的方法是让每个单元格占用2个字符(空格和数字,或2位数字)。
答案 1 :(得分:0)
要解决您的问题,您应该首先将其分解为两个较小的子问题:
生成所需的三角形值矩阵(称为 Pascal's triangle,等等。)
很好地显示值。
每个问题本身都相当简单。试试你的手,如果你需要帮助,请回来。
答案 2 :(得分:-1)
for(i=0;i<7;i++)
{
for(j=i+3;j<7;j++) {
System.out.print(twoD[i][j]+" ");
}
System.out.println("");
}
您要删除索引3之外的任何值,这就是为什么您只使用4个数字而不是7个
写入7x7阵列后使用
int num=0;
for(i=1;i<7;i++)
{
num=0;
for(j=7;j>7-i;j--)
{
System.out.print(twoD[i][j]+" ");
System.out.print(twoD[i][num]+" ");
num++;
}
System.out.println("");
}
这应该提供所需的输出