【问题标题】:How to increment the value of an int variable? [closed]如何增加 int 变量的值? [关闭]
【发布时间】:2015-05-07 07:43:33
【问题描述】:

我想在用户点击按钮时增加一个 int 变量的值,但现在该值只增加一次。

这是我用来增加变量p的值。

@Override
public void onClick(View v) {
    int p = 1;

    if (p == 9) {
        Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
    } else {
        p = p + 1;                      
        holder.textViewQuantity.setText("" + p);                        
    }
}

【问题讨论】:

  • int p = 1; 移动为班级成员。
  • 不确定也不确定为什么关闭投票,它有一个足够清晰的问题,有足够的代码来演示。
  • 我正在使用 p 来增加产品的数量单击增量按钮,它直接显示 5 而不是 2 ...所以这是我面临的主要问题
  • 所以,你甚至懒得看人们在这里给出的答案,因为这不是你真正的问题?
  • 这个用户再次向我们提出了一个“太复杂”的问题,等等,这甚至不是他真正的问题。也许你,亲爱的 OP,开始解释你想要什么以及到目前为止你已经尝试过什么。用简洁易懂的句子。 (除此之外:在查看器中设置一个值会在您滚动列表时产生有趣的结果......您比增加一个值有更多的问题!......只是说)

标签: java android increment


【解决方案1】:

p 在方法内部时,它是一个局部变量,并且是每个方法调用的唯一值,每次都初始化为1

将它移动到类中,它成为一个实例变量(AKA 字段),并在类实例的生命周期中保持其最新值。

阅读this doc on the 4 types of variables了解更多信息。

private int p = 1; //moved 

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    if(p == 9) {
        Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
        return ;
    }
    else {                              
        p = p+1;                        
        holder.textViewQuantity.setText(""+p);                      
    }

【讨论】:

  • 我知道,但我正在使用 p 来增加产品的数量,就像我在列表中有 3 个项目一样,我将 p 留给第一个列表项为 4,现在在我的第二个列表项中请单击增量按钮,它直接显示 5 而不是 2 ...所以这是我面临的主要问题
  • 您想将数量 (p) 添加到列表项类中。如果这不合适,则需要一个包含产品类别和数量的新类别。
【解决方案2】:

变量p 应该是类成员:

int p = 1;  

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub


    if(p == 9) {
        Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
        return ;
    }
    else {                              
        p = p+1;                        
        holder.textViewQuantity.setText(""+p);                      
    }

【讨论】:

  • 我知道,但我正在使用 p 来增加产品的数量,就像我在列表中有 3 个项目一样,我将 p 留给第一个列表项为 4,现在在我的第二个列表项中请单击增量按钮,它直接显示 5 而不是 2 ...所以这是我面临的主要问题
【解决方案3】:

将其声明为全局变量。使其对整个班级可见(我假设,您不会一次又一次地声明该对象)。目前该变量的作用域仅限于函数,每次事件发生时该变量的值都为 1。

每当调用此事件时,您的值 p 都会被赋值为 1。

class YourClass{

     int p;  /// creating p 
     YourClass(){
      p = 1;     /// initializing the value in constructor;
     } 


 // your onClick Event Code;
 @Override
 public void onClick(View v) {
 if(p == 9) {
 Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
   return ;
 }
 else {                              
   p = p+1;                        
    holder.textViewQuantity.setText(""+p);                      
 }
 }  

【讨论】:

  • 我知道,但我正在使用 p 来增加产品的数量,就像我在列表中有 3 个项目一样,我将 p 留给第一个列表项为 4,现在在我的第二个列表项中请单击增量按钮,它直接显示 5 而不是 2 ...所以这是我面临的主要问题
  • 您必须存储每个项目的计数器值。在此处使用映射...键将是项目,值将是计数器
【解决方案4】:

将 int p = 1 移出函数,您将 p 重置为 1 onclick。

【讨论】:

    【解决方案5】:

    您的代码应如下所示:

    private int p = 1;
    
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
        if(p == 9) {
            Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
            return ;
        }
        else {                              
            p = p+1;                        
            holder.textViewQuantity.setText(""+p);                      
        }
    }
    

    int p 应该是类成员。

    【讨论】:

    • 我知道,但我正在使用 p 来增加产品的数量,就像我在列表中有 3 个项目一样,我将 p 留给第一个列表项为 4,现在在我的第二个列表项中请单击增量按钮,它直接显示 5 而不是 2 ...所以这是我面临的主要问题
    • 您必须存储每个项目的值。根据您的要求使用 Map 或 ArrayList。
    【解决方案6】:

    您可以将变量设为静态,然后它将计算给定类的所有按钮点击次数:

    class Button {
       public static int p = 0;
    
       @Override
       public void onClick(View v) {
       // TODO Auto-generated method stub     
    
       if(p == 9) {
           Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
           return ;
        }
        else {                              
           p = p+1;                        
           holder.textViewQuantity.setText(""+p);                      
        }
    }
    

    【讨论】:

    • 我知道,但我正在使用 p 来增加产品的数量,就像我在列表中有 3 个项目一样,我将 p 留给第一个列表项为 4,现在在我的第二个列表项中请单击增量按钮,它直接显示 5 而不是 2 ...所以这是我面临的主要问题
    【解决方案7】:

    私有 int p = 0;

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
         p+=1;
       if(p<9)
         holder.textViewQuantity.setText(String.valueof(p)); 
       else
        Toast.makeText(context, "You have reached to maximum number", Toast.LENGTH_LONG).show();
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      相关资源
      最近更新 更多