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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴亨 黑马帝   /  2011-12-14 17:28  /  1769 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 stephen8341 于 2011-12-14 23:20 编辑

public class TestInteger {

        public static void main(String[] args) {
                int width = new Integer(args[0]).intValue();
                int height = Integer.parseInt(args[1]);
                for(int i=0;i<height;i++)
                        StringBuffer sb = new StringBuffer();
                        for(int j=0;j<width;j++)
                        {
                          sb.append('*');

                        }
                        System.out.println(sb.toString());
        }
}


输出结果是:
D:\java>javac TestInteger.java
TestInteger.java:14: 错误: 不是语句
                        StringBuffer sb = new StringBuffer();
                        ^
TestInteger.java:14: 错误: 需要';'
                        StringBuffer sb = new StringBuffer();
                                    ^
2 个错误

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

6 个回复

倒序浏览
吴亨 黑马帝 2011-12-14 17:28:40
沙发
求大家指教一下
回复 使用道具 举报
循环体执行语句是多句,不能省略大括号。
你上面的代码,sb是在循环体内部定义的,出去循环体就内存释放了。
循环体外边根本不认识。循环体加上大括号试试。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 benbenqi 于 2011-12-14 18:13 编辑
  1. public class TestInteger
  2. {

  3.         public static void main(String[] args)
  4.                 {
  5.                 int width = new Integer(args[0]).intValue();
  6.                 int height = Integer.parseInt(args[1]);
  7.                 for(int i=0;i<height;i++)
  8.         [color=red]{[/color] StringBuffer sb = new StringBuffer();
  9.         for(int j=0;j<width;j++)
  10.          {
  11.                  sb.append('*');

  12.         }
  13.         System.out.println(sb.toString());
  14.         [color=red]}[/color]
  15.         }
  16. }

复制代码
缺少了括号
for(int i=0;i<height;i++)
   StringBuffer sb = new StringBuffer();
一直执行这2句 直到i不小于height 你简历了N多StringBuffer对象,而且都是sb名称

剩下的你应该直到如何操作了

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
for(int i=0;i<height;i++)
for循环后面缺少了花括号{}, 没有花括号的话,它只循环执行后面最近的一句,即StringBuffer sb = new StringBuffer() 。
回复 使用道具 举报
郝亚平 发表于 2011-12-14 17:40
循环体执行语句是多句,不能省略大括号。
你上面的代码,sb是在循环体内部定义的,出去循环体就内存释放了 ...

正解,循环体中的定义大多如此
回复 使用道具 举报
吴亨 黑马帝 2011-12-14 23:19:55
7#
奥,我太粗心了。谢谢大家
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马