黑马程序员技术交流社区

标题: 算法问题,求解~ [打印本页]

作者: 王怡然    时间: 2012-4-16 20:30
标题: 算法问题,求解~
  1. {
  2.         public static void main(String[] args)
  3.         {
  4.                 for ( int x = 1; x <=6 ; x++ )
  5.                 {
  6.                         for ( int y = 1; y<x ; y++ )
  7.                         {
  8.                                 System.out.println("y");
  9.                         }
  10.                         for ( int num = y ; num >=1 ; num-- )
  11.                         {
  12.                                 System.out.println("num");
  13.                         }
  14.                 }
  15.         }
  16. }
复制代码
在命令行里显示出:
1
121
12321
1234321
123454321
为何我的运算老出错,在内部的第二个fou里无法访问到第一个fou里.
作者: 高铭    时间: 2012-4-16 20:33
本帖最后由 koma501 于 2012-4-16 20:51 编辑

两个for循环里面的y 和 num 是局部变量 循环结束后就释放了
怎么能访问到呢
把y num 的引号去掉吧 不去掉只是把字符串打印出来了
作者: chenwei    时间: 2012-4-16 20:46
第一个for里定义的y只能在
for ( int y = 1; y<x ; y++ )
  {
System.out.println("y");
}
里面用
还有你打印的是字符串y和num;去掉双引号
代码好像也不对
作者: 栗学魁    时间: 2012-4-16 21:20
两个for在一起了,初学,是个笨方法


class Shu {
public static void main(String[] args) {
  Shu shu = new Shu();
  shu.action(5);
}
public Shu() {
}
public void action(int n) {
  for (int i = 1; i < n; i++) {
   shuzi(i);
   System.out.println(" ");
  }
  for (int i = 1; i < n; i++) {
   shuzi(i);
   System.out.println(" ");
  }
}
public void shuzi(int i) {
  for (int j = 1; j < i; j++) {
   System.out.print(j);
  }
  for (int j = i; j > 0; j--) {
   System.out.print(j);
  }
}
}
作者: 曾虓    时间: 2012-4-16 21:29
本帖最后由 曾虓 于 2012-4-16 21:30 编辑

分析楼主代码:
18行:
for ( int num = y ; num >=1 ; num-- )
这里的y变量未定义,会报错。
其次
输出变量时是不能用“”括起来的,那样是输出字符串。
实现代码如下:
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 int row = 5;// 声明行数
  4.                 for (int j = 1; j <= row; j++) {// 第一层循环,控制每一行
  5.                         for (int i = 1; i <=j; i++) {//嵌套第二个循环,控制左半部输出
  6.                                 System.out.print(i);
  7.                         }
  8.                         for (int i = j-1; i >=1; i--) {//嵌套第三个循环,控制右半部输出
  9.                                 System.out.print(i);
  10.                         }
  11.                         System.out.println();//控制每一行的换行
  12.                 }
  13.         }

  14. }
复制代码
输出结果如下:

希望对你有所帮助。

作者: 王永旺    时间: 2012-4-16 21:32
本帖最后由 王永旺 于 2012-4-16 21:34 编辑

可以了,代码共改动三处
1 打印语句里得“y”和“num”的引号去掉
2 第10行 for ( int num = y ; num >=1 ; num-- ) ;    int num = x;
3.末尾处15行加 System.out.println(); 起换行作用。
  1. public class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for ( int x = 1; x <=6 ; x++ )
  6.                 {
  7.                         for ( int y = 1; y<x ; y++ )
  8.                         {
  9.                                 System.out.print(y);
  10.                         }
  11.                         for ( int num = x ; num >=1 ; num-- )
  12.                         {
  13.                                 System.out.print(num);
  14.                         }
  15.                         System.out.println();
  16.                 }
  17.         }
  18. }
复制代码

作者: 伊文龙    时间: 2012-4-16 21:36
  1. public class Test {
  2.        
  3.         public static void main(String[] args)
  4.         {
  5.                 for ( int x = 1; x <=6 ; x++ )
  6.                 {
  7.                         int y=1;
  8.                     for (; y<x ; y++ )
  9.                     {
  10.                         System.out.print(y);
  11.                     }
  12.                     for ( int num = y ; num >=1 ; num-- )
  13.                     {   
  14.                             System.out.print(num);
  15.                        
  16.                     }
  17.                        
  18.                     System.out.println();
  19.                 }
  20.         }
  21. }
复制代码
你的问题主要由三个:
  1.  最明显的问题,就是你System.out.println("y");/System.out.println("num");里面的引号,不知道是你基础的问题,还是手误。
  2. 你的格式控制不对
  3.  你没搞清楚变量y 的作用域
作者: 黑马—王宁    时间: 2012-4-16 21:55
for ( int num = y ; num >=1 ; num-- )
这里的y变量未定义,会报错。

作者: 王怡然    时间: 2012-4-16 23:30
我想说那会儿急的很,真的是手误了,呵呵,谢谢解答~
作者: 张超超    时间: 2012-4-17 11:13
你定义的两个for循环里面的x和y都是局部变量
第一个for里定义的y只能在
for ( int y = 1; y<x ; y++ )
  {
System.out.println("y");
}
要分清他们的有效范围
作者: 韩新凯    时间: 2012-4-17 11:51
class RuntimeDemo {
        public static void main(String[] args)
        {
                for (int x = 1; x <= 6; x++)
                {
                        for (int y = 1; y < x; y++)
                        {
                                System.out.print(y);
                        }
                        for (int num = x; num >= 1; num--)
                        {
                                System.out.print(num);
                        }
                        System.out.println();
                }
        }
}
1.把 for ( int num = y ; num >=1 ; num-- )里面的y改成x;
2.把System.out.println("y");改成System.out.print(y);
3.把System.out.println("num");改成System.out.print(num);
4.在第14行的}前添加一句   System.out.println();
这样应该就行了,可以参考我前面的代码。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2