A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王怡然 黑马帝   /  2012-4-16 20:30  /  2396 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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里.

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

10 个回复

正序浏览
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();
这样应该就行了,可以参考我前面的代码。
回复 使用道具 举报
你定义的两个for循环里面的x和y都是局部变量
第一个for里定义的y只能在
for ( int y = 1; y<x ; y++ )
  {
System.out.println("y");
}
要分清他们的有效范围
回复 使用道具 举报
王怡然 黑马帝 2012-4-16 23:30:45
9#
我想说那会儿急的很,真的是手误了,呵呵,谢谢解答~
回复 使用道具 举报
for ( int num = y ; num >=1 ; num-- )
这里的y变量未定义,会报错。
回复 使用道具 举报
  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 的作用域

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王永旺 于 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 曾虓 于 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. }
复制代码
输出结果如下:

希望对你有所帮助。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
两个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);
  }
}
}

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
第一个for里定义的y只能在
for ( int y = 1; y<x ; y++ )
  {
System.out.println("y");
}
里面用
还有你打印的是字符串y和num;去掉双引号
代码好像也不对

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 koma501 于 2012-4-16 20:51 编辑

两个for循环里面的y 和 num 是局部变量 循环结束后就释放了
怎么能访问到呢
把y num 的引号去掉吧 不去掉只是把字符串打印出来了

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马