黑马程序员技术交流社区

标题: if else语句中不可以建数组是这样吗?为什么 [打印本页]

作者: 穆顺涛    时间: 2015-4-29 14:22
标题: if else语句中不可以建数组是这样吗?为什么

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

作者: lhwinner    时间: 2015-4-29 15:42
因为是键盘录入,使用readLine()方法读取结束的标志是遇到换行符,而使用键盘录入是无法输入换号符的,因此readLine方法会一直等待区读取你键盘录入的数据,因此字符串line一直都没接受到数据,因此使用字符串的长度来定义数组的长度是实现不了的
作者: 穆顺涛    时间: 2015-4-29 15:49
lhwinner 发表于 2015-4-29 15:42
因为是键盘录入,使用readLine()方法读取结束的标志是遇到换行符,而使用键盘录入是无法输入换号符的,因此 ...

把18行放到else语句外的14行去定义字符数组就没有这个错误了
作者: lhwinner    时间: 2015-4-29 16:13
你可以把else去掉,看能往下通过没有
作者: 曾宇    时间: 2015-4-29 16:27
18行line.length();去掉。
作者: zhang214214    时间: 2015-4-29 17:49
好问题,这个我也想知道哈,额呵呵呵
作者: 大兵在海边    时间: 2015-4-29 19:46
lhwinner 发表于 2015-4-29 15:42
因为是键盘录入,使用readLine()方法读取结束的标志是遇到换行符,而使用键盘录入是无法输入换号符的,因此 ...

意思就是line=null,这个时候数组是么有长度的,对吗?
作者: 穆顺涛    时间: 2015-4-29 20:10
大兵在海边 发表于 2015-4-29 19:46
意思就是line=null,这个时候数组是么有长度的,对吗?

while循环不是应该先读条件再读循环体吗?读条件的时候line应该已经不是null了,被read 方法赋值了吧
作者: 穆顺涛    时间: 2015-4-29 20:16
曾宇 发表于 2015-4-29 16:27
18行line.length();去掉。

我写了一个很简单的if else程序,如果条件成立new一个数组失败,说此处不允许使用变量声明,应该就是判断语句不能建数组,可是为什么啊
作者: hnnz    时间: 2015-4-29 20:39
虽然我没有犯过这种错误,不过还是给了我一个警醒、、、
作者: hnnz    时间: 2015-4-29 20:43
虽然我没有犯过这种错误,不过还是给了我一个警醒、、、
作者: 柒夜    时间: 2015-4-29 20:54
定义数组的时候必须制定数组的长度,不能使用变量。例如
char [] ch = new char [20];
作者: jiao142857    时间: 2015-4-29 21:06
是else 后面{}的事  你可以把定义char数组的句子加上后看看 就没问题了
作者: 穆顺涛    时间: 2015-4-29 22:04
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:36
本帖最后由 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
解释的挺好的 说是作用域的原因





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