Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何增加int变量的值?_Java_Android_Increment - Fatal编程技术网

Java 如何增加int变量的值?

Java 如何增加int变量的值?,java,android,increment,Java,Android,Increment,我想在用户点击按钮时增加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

我想在用户点击按钮时增加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);                        
    }
}

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

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

阅读更多信息

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
应为类成员:

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);                      
    }

将其声明为全局变量。使它对整个类可见(我假设,您没有一次又一次地声明对象)。此时,变量的范围仅限于函数,并且每次事件发生时,该变量的值都为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);                      
 }
 }  

将int p=1移出函数,单击一次就将p重置为1。

您的代码应该如下所示:

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应该是类成员。

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

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);                      
    }
}
私有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();
}
@覆盖
公共void onClick(视图v){
//TODO自动生成的方法存根
p+=1;

如果(pmove
int p=1;
作为类成员。不确定也不确定为什么接近者投票,它有一个足够明显的问题,有足够的代码来演示。@SteffenKreutz我用p来增加产品的数量,就像我在一个列表中有3个项目一样,我在第一个列表项目中留下了4个p,现在在第二个列表项目中,当我点击递增按钮时它直接显示5而不是2…所以这是我面临的主要问题所以,你甚至懒得在这里看到人们给出的答案,因为这不是你真正的问题?这个用户再次以“太复杂”打动了我们这个问题,等等,甚至不是他真正的问题。也许你们,亲爱的OP,开始解释你们想要什么,你们到目前为止尝试了什么。用简洁易懂的句子。(除此之外:在viewholder中设置一个值将在您滚动列表时产生有趣的结果…您有比增加值更多的问题!…只是说)我知道,但我用p来增加产品的数量,就像我在一个列表中有3个项目,我在第一个列表项目中留下了4个项目,现在在第二个列表项目中,当我点击递增按钮时,它直接显示5而不是2…所以这是我面临的主要问题。你必须存储每个项目的值。使用Map或ArrayList作为你的要求。我知道现在,我用p来增加产品的数量,就像我在一个列表中有3个项目一样,我在第一个列表项目中留下了4个项目,现在在第二个列表项目中,当我点击递增按钮时,它直接显示5而不是2…所以这是我面临的主要问题。你想添加数量(
p
)到列表项类。如果不合适,则需要一个包含产品类和数量的新类。我知道,但我使用p来增加产品的数量,就像我在列表中有3个项目一样,我在第一个列表项中留下了4个p,现在在第二个列表项中,当我单击增量按钮时,它直接显示5而不是52…所以这是我面临的主要问题。你必须存储每个项目的计数器值。在这里使用map…键将是项目,值将是计数器我知道,但我使用p来增加产品的数量,就像我在一个列表中有3个项目一样,我在第一个列表项目中留下了4个p,现在在第二个列表项目中,当我点击inc时记住按钮,它直接显示5而不是2…所以这是我面临的主要问题我知道,但我使用p来增加产品数量,就像我在一个列表中有3个项目,我在第一个列表项目中留下了4个p,现在在第二个列表项目中,当我点击递增按钮时,它直接显示5而不是2…所以这是我的主要问题我面对