如何在if语句之外获取变量的值

时间:2014-05-21 15:48:18

标签: java android button onclicklistener

是否可以使用if else语句中的变量 value1 的值,并将其插入到if的其他必须在之外的等式中声明。

每次运行程序时,我的变量 value1

的值为0
int value; 
int value1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_activity3); 

    button1 = (Button)findViewById(R.id.button1); 
    button2 = (Button)findViewById(R.id.button2);

    final Random r=new Random(); 
    value = r.nextInt(4 - 1 + 1) + 1; 

    if (value == 1) {
        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                value1 = r.nextInt(4 - 1 + 1) + 1;      
            }
        });
    } else (value == 2) { 
        button2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                value1 = r.nextInt(4 - 1 + 1) + 1;      
            }
        });
        // equation 
    }
}  

3 个答案:

答案 0 :(得分:1)

您的问题在于使用Random课程。 Random创建伪随机数序列。每次创建Random的新实例并致电nextInt()时,您都会得到相同的数字。要更改此行为,您应该使用seed:作为参数传递给Random()构造函数的任何整数。

通常人们将当前时间用作种子:

Random r = new Random(System.currentTimeMillis());
int n = r.nextInt();

此代码将在每个程序调用时创建不同的编号。

答案 1 :(得分:1)

直接回答你的问题:是的,你可以。 请看以下示例:

int value = 10;
int value1;

if (value == 10) {
    value1 = 6;
}

System.out.println("Value1: " + value1);

这将起作用,并将输出6.并且如您所见,我已经使用了if语句之外的值。

答案 2 :(得分:0)

您可以实现的目标,但是您对该代码有其他一些问题,您是否尝试过编译它?

  • 我认为value可能不是1,而你没有处理所有可能的情况
  • 如果(值== 2),
  • else(value == 2)需要为else,尽管您可能会考虑使用switch语句
  • 每次使用相同的种子随机生成相同的输出

至于你的实际问题,你可以获得if1之外的value1吗?您已经在if之外声明了变量 - 您已在成员级别声明它,因此您已经能够在类中的任何位置访问它