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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马雨铎 黑马帝   /  2011-7-27 22:44  /  2308 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class TestScope{
public static void main(String[] args)   {
   int x = 12;
    {
      int q = 96;
     int x = 3;
      System.out.println("x is "+x);
     System.out.println("q is "+q);       }
   q = x;//应该这是这有问题    大家给看看这么改才能让这个程序 顺利运行
    System.out.println("x is "+x);      
   }
}

评分

参与人数 1技术分 -1 收起 理由
admin -1 浪费大家时间

查看全部评分

5 个回复

倒序浏览
黑马网友  发表于 2011-7-27 22:50:08
沙发
看不明白你写的到底是什么意思,你是想做什么?
回复 使用道具 举报
黑马网友  发表于 2011-7-27 22:52:50
藤椅
你是想把q的值赋给x么?

这样的话,要写成 x = q;
回复 使用道具 举报
黑马网友  发表于 2011-7-27 23:08:44
板凳
是啊 我这都瞅了半小时了 没看出来想要问什么 而且问题也不是那
回复 使用道具 举报
黑马网友  发表于 2011-7-27 23:21:13
报纸
这个是什么程序哦,兄弟你贴出来的时候看了一下没有,调试过没有哦,你的问题也没有说清楚,我想你是不是想测试一个局部变量和一个全局变量的问题哦。是不是像这样哦:
public class TestScope {
        public static void main(String[] args) {
                int x = 12;
                {
                        int q = 96;
                        x = 3;
                        System.out.println("x is " + x);
                        System.out.println("q is " + q);

                        x = q;
                        System.out.println("x is " + x);
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1 批评得很对

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-28 09:26:02
地板
若局部变量和全局变量同名,则在局部变量的作用域内全局变量会被隐藏,即不再起作用了。
但是您的程序,是在一个局部范围内,定义了两个变量x,所以,您程序的第一个错误是由“变量重复定义”引起的。
范例1:他们需要分居。[code=java]package org.cxy.demo;

public class Demo{
        public static void main(String[] args) {
                {
                        int x = 12;
                        System.out.println("x="+x);
                }
                {
                        int x = 3;
                        System.out.println("x="+x);
                }
        }
}[/code]第一个x和第二个x分别属于main方法中的不同的子块。 当程序流程执行完第一个块内的代码时,该块内的所有变量都将消失。
因此,执行到第二个块时,不会出现“变量重复定义”。
但是,您的代码,类似于如下:
范例2:他们居然视图同居。[code=java]package org.cxy.demo;

public class Demo{
        public static void main(String[] args) {
                int x = 12;
                {
                        int x = 3;
                        System.out.println("x="+x);
                }
        }
}[/code]此时第一个x属于main方法块,只有在main方法结束后,他才会消失。而程序执行到第二个x时,第一个x并没有消失。

您的第二个错误,是代码缩进不规范导致的。
范例3:仔细看看吧。[code=java]package org.cxy.demo;

public class Demo{
        public static void main(String[] args) {
                int x = 3;
                {
                        int q = 96;
                }
                q = x;//应该这是这有问题 大家给看看这么改才能让这个程序 顺利运行
        }
}[/code]当q所在的块被执行完毕后,那么q就消失了,因此在块的外面无法访问到q。

提示:复制代码后,将代码放入记事本中,使用替换功能,可以将 替换成“ ”字符。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马