黑马程序员技术交流社区
标题:
打印三角形问题
[打印本页]
作者:
马林康
时间:
2012-6-26 16:19
标题:
打印三角形问题
本帖最后由 马林康 于 2012-6-26 19:17 编辑
期望图形:
*
**
***
****
*****
****
***
**
*
我的代码
public static void printTriangle_3(int n){
for(int i=1;i<=n/2+1;i++){
for(int j=1;j<=i;j++)
System.out.print("*");
System.out.println("");
}
for(int i=1;i<=n/2;i++){
for(int j=1;j<=n/2-i;j++)
System.out.print("*");
System.out.println("");
}
}
复制代码
那里错了 老是打印成这样
*
**
***
****
*****
***
**
*
作者:
邓杰
时间:
2012-6-26 16:42
public static void printTriangle_3(int n){
for(int i=1;i<=n/2+1;i++){
for(int j=1;j<=i;j++)
{
System.out.print("*");
}
System.out.println("");
}
//再或者i=0;
for(int i=0;i<=n/2;i++){
//j=0;或者j<=n/2-i=1;
for(int j=1;j<=n/2-i;j++)//原因不好解释 因为你只有自己读一遍代码就是知道第一次只打印三个;
//j=1; n/2-i=4; 只循环了三次当然就只打印三个星;所以你可以在这儿写成j<=n/2+1;还可以
//j=0;//也可以把i=0;
{
System.out.print("*");
}
System.out.println("");
}
}
作者:
邱国
时间:
2012-6-26 16:46
本帖最后由 邱国 于 2012-6-26 16:47 编辑
package qiuguo.heima.test;
public class sanjiao {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
printTriangle_3(12);
}
public static void printTriangle_3(int n){
for(int i=1;i<=n/2+1;i++){
for(int j=1;j<=i;j++)
System.out.print("*");
System.out.println("");
}
for(int i=1;i<=n/2;i++){
for(int j=1;j<=n/2-i+1;j++) //<font color="red">lz这里出问题了,应该再要加上1,不然刚好算少了一行*
</font>
System.out.print("*");
System.out.println("");
}
}
}
复制代码
看我贴的代码,for(int j=1;j<=n/2-i;j++)
改为:for(int j=1;j<=n/2-i+1;j++)
这是经常会漏的问题,在各种排序算法中
作者:
张华廷
时间:
2012-6-26 16:46
public static void printTriangle_3(int n){
for(int i=1;i<=n/2+1;i++){
for(int j=1;j<=i;j++)
System.out.print("*");
System.out.println("");
}
for(int i=1;i<=n/2;i++){
for(int j=1;j<=n/2-i;j++)//把i改为0这样就可以了
System.out.print("*");
System.out.println("");
}
}
作者:
薄炳鑫
时间:
2012-6-26 17:09
分析你的代码可知,你是第二个for循环出现问题,在看你的*在列数上相差一个可知是for循环的嵌套的for循环出现问题。
因为外层的for循环是控制行的,里面for循环是控制列的。
修改后的代码如下:
class Demo
{
public static void main(String[] args)
{
printTriangle_3(8);
}
public static void printTriangle_3(int n){
for(int i=1;i<=n/2+1;i++){
for(int j=1;j<=i;j++)
System.out.print("*");
System.out.println("");
}
for(int i=1;i<=n/2;i++){
for(int j=0;j<=n/2-i;j++)
System.out.print("*");
System.out.println("");
}
}
}
复制代码
作者:
李文龙
时间:
2012-6-26 17:51
for(int i=1;i<=n/2;i++)
{
for(int j=1;j<=n/2-i+1;j++)
System.out.print("*");
System.out.println("");
}
红色的地方,循环控制条件有问题,比对输出结果可以发现,少了一行,加上一个1即可,有时候出现问题了不要慌,在循环里边改下条件,基本都能解决了
作者:
赵庆礼
时间:
2012-6-26 18:51
class ArrayDemo
{
public static void main(String[] args)
{
printTriangle_3(6);
}
public static void printTriangle_3(int n){
for(int i=1;i<=n/2+1;i++){
for(int j=1;j<=i;j++)
System.out.print("*");
System.out.println("");
}
for(int i=1;i<=n/2;i++){
for(int j=1;j<=n/2-i+1;j++)//<FONT color=darkgreen> 经过测试,是该for语句中少算了一个1.
</FONT>System.out.print("*");
System.out.println("");
}
}
}
<IMG border=0 alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=3652&size=300x300&key=ef230b82e7e1d5b630effd26def9480e&nocache=yes&type=fixnone" aid="attachimg_3652">
复制代码
未命名.jpg
(13.34 KB, 下载次数: 117)
下载附件
2012-6-26 18:51 上传
作者:
逆光奔跑
时间:
2015-7-28 22:59
for嵌套循环的知识
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2