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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


18行错误,说不可以使用变量声明,是因为在else语句吗?为什么?

14 个回复

倒序浏览
因为是键盘录入,使用readLine()方法读取结束的标志是遇到换行符,而使用键盘录入是无法输入换号符的,因此readLine方法会一直等待区读取你键盘录入的数据,因此字符串line一直都没接受到数据,因此使用字符串的长度来定义数组的长度是实现不了的
回复 使用道具 举报
lhwinner 发表于 2015-4-29 15:42
因为是键盘录入,使用readLine()方法读取结束的标志是遇到换行符,而使用键盘录入是无法输入换号符的,因此 ...

把18行放到else语句外的14行去定义字符数组就没有这个错误了
回复 使用道具 举报
你可以把else去掉,看能往下通过没有
回复 使用道具 举报
18行line.length();去掉。
回复 使用道具 举报
好问题,这个我也想知道哈,额呵呵呵
回复 使用道具 举报
lhwinner 发表于 2015-4-29 15:42
因为是键盘录入,使用readLine()方法读取结束的标志是遇到换行符,而使用键盘录入是无法输入换号符的,因此 ...

意思就是line=null,这个时候数组是么有长度的,对吗?
回复 使用道具 举报
大兵在海边 发表于 2015-4-29 19:46
意思就是line=null,这个时候数组是么有长度的,对吗?

while循环不是应该先读条件再读循环体吗?读条件的时候line应该已经不是null了,被read 方法赋值了吧
回复 使用道具 举报
曾宇 发表于 2015-4-29 16:27
18行line.length();去掉。

我写了一个很简单的if else程序,如果条件成立new一个数组失败,说此处不允许使用变量声明,应该就是判断语句不能建数组,可是为什么啊
回复 使用道具 举报
hnnz 中级黑马 2015-4-29 20:39:22
10#
虽然我没有犯过这种错误,不过还是给了我一个警醒、、、
回复 使用道具 举报
hnnz 中级黑马 2015-4-29 20:43:55
11#
虽然我没有犯过这种错误,不过还是给了我一个警醒、、、
回复 使用道具 举报
定义数组的时候必须制定数组的长度,不能使用变量。例如
char [] ch = new char [20];
回复 使用道具 举报
是else 后面{}的事  你可以把定义char数组的句子加上后看看 就没问题了
回复 使用道具 举报
jiao142857 发表于 2015-4-29 21:06
是else 后面{}的事  你可以把定义char数组的句子加上后看看 就没问题了

谢谢,按你说的做问题解决了
public static void main(String[] args)
        {
        int a=2;
        if(a>0)
                int  x=1;
        else
                int  x=2;
        System.out.println(x);
麻烦看下,问什么错误提示此处不允许使用变量声明?是否还是说在判断语句不能定义变量
回复 使用道具 举报
本帖最后由 jiao142857 于 2015-4-29 22:47 编辑
穆顺涛 发表于 2015-4-29 22:04
谢谢,按你说的做问题解决了
public static void main(String[] args)
        {

别客气,我也是新手,原因可能有俩:
1 java语法,
2 int i= 1; 或者定义数组等 虽然我们写了一句 但是解析时是多句的
  eg. int i;
         i=1;  

       char[] ch;
       ch = new char[...];
      而if else语句不加{} 只会作用于紧邻的一句(整体的一句)代码
又百度了下 看到这篇文章http://blog.csdn.net/java2000_net/article/details/2835995
解释的挺好的 说是作用域的原因
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马