CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

关于局部变量与成员变量的一个问题

楼主getlow()2006-03-22 14:41:18 在 Java / J2SE / 基础类 提问

我在程序的"WindowButton"类中定义了一个成员变量:number1,程序就正常运行,但我把成员变量:number1注释了,然后在方法:"actionPerformed(ActionEvent   e)"中定义一个局部变量number1来取代注释部分,并初始化后,就不能通过Math.random()方法得到随机数了,局部变量:number1始终还是初始化的那个值.请帮我解释一下这其中的原由.   具体程序如下:  
  import   java.awt.*;  
  import   java.awt.event.*;  
  class   WindowButton   extends   Frame   implements   ActionListener  
  {  
  //int   number1;  
  TextField   提示条,文本框;  
  Button   buttonGetNumber,buttonEnter;  
  WindowButton(String   s)  
  {  
  super(s);  
  setLayout(new   FlowLayout());  
  buttonGetNumber   =   new   Button("得到一个随机数");  
  add(buttonGetNumber);  
  提示条   =   new   TextField("输入你的猜测:",10);  
  提示条.setEditable(false);  
  文本框=new   TextField("0",10);  
  add(提示条);  
  add(文本框);  
  buttonEnter   =   new   Button("确定");  
  add(buttonEnter);  
  buttonEnter.addActionListener(this);  
  buttonGetNumber.addActionListener(this);  
  setBounds(100,100,150,150);  
  setVisible(true);  
  validate();  
  }  
  public   void   actionPerformed(ActionEvent   e)  
  {  
                              int   number1=0;  
   
  if(e.getSource()==buttonGetNumber)  
  {    
  number1   =(int)(Math.random()*100)+1;  
  提示条.setText("输入你的猜测:   ");  
  }  
  else   if(e.getSource()==buttonEnter)  
  {  
  int   guess=0;  
  try  
  {  
  guess=Integer.parseInt(文本框.getText());  
  if(guess==number1)  
  {  
  提示条.setText("猜对了!");  
  }  
  else   if(guess>number1)  
  {  
  提示条.setText("猜大了!");  
  文本框.setText(null);  
  }  
  else   if(guess<number1)  
  {  
  提示条.setText("猜小了!");  
  文本框.setText(null);  
  }  
  }  
  catch(NumberFormatException   ee)  
  {  
  提示条.setText("请输入数字字符");  
  }  
  }  
  }  
  }  
  class   Example7  
  {  
  public   static   void   main(String   []   args)  
  {  
  WindowButton   win   =   new   WindowButton("窗口");  
  }  
  } 问题点数:50、回复次数:7Top

1 楼lqshadan(强)回复于 2006-03-22 15:15:18 得分 10

1.使用Math.random()时请初始化   随机数生成器   不然执行N次都有可能产生同一个数Top

2 楼navy7148(飞尘)回复于 2006-03-22 15:30:31 得分 0

upTop

3 楼getlow()回复于 2006-03-22 15:33:01 得分 0

随机数生成器:"Math.random()"是怎样初始化的?Top

4 楼liang8305(换工作的时间到了...)回复于 2006-03-22 15:35:34 得分 0

局部变量推出actionPerformed方法就收回了...Top

5 楼pigengler(en)回复于 2006-03-22 15:39:28 得分 0

重新编译一下Top

6 楼liang8305(换工作的时间到了...)回复于 2006-03-22 15:39:57 得分 40

Math.random()不用初始化  
   
  是局部变量的问题...  
   
  你可以在插入一行输出测试一下就知道了,如:  
  if(e.getSource()==buttonGetNumber)  
  {    
  number1   =(int)(Math.random()*100)+1;  
                                                        System.out.println(number1);  
  提示条.setText("输入你的猜测:   ");  
  }  
   
  当你按"得到一个随机数"按钮的时候就会在控制台打印出这个值了  
  因为他是局部变量,所以退出方法则收回内存...  
   
  Top

7 楼lqshadan(强)回复于 2006-03-22 17:46:01 得分 0

我原来做过猜数字的游戏   不初始化     每次游戏开始后   的值都是固定的   比如第一次运行出现的值是13  
  那么关掉程序     再跑   第一次出现的值还是13Top

相关问题

  • 局部变量与栈
  • 】】】全局变量与局部变量的疑惑!!!【【【
  • 关于局部变量!!!
  • 关于全局变量,main()中局部变量与函数参数的问题
  • delphi里没静态局部变量?
  • 关于函数返回局部变量
  • 局部变量作返回值
  • 局部变量重名问题
  • 局部变量传指针问题
  • 有时成员函数里的局部变量也加 static修饰符,有什么用么?

关键词

  • 局部变量
  • buttongetnumber
  • buttonenter
  • windowbutton
  • 文本框
  • 成员变量
  • textfield
  • number1
  • 程序
  • 提示条

得分解答快速导航

  • 帖主:getlow
  • lqshadan
  • liang8305

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo