Java Android studio变量增量问题

Java Android studio变量增量问题,java,android,variables,android-studio,increment,Java,Android,Variables,Android Studio,Increment,变量c出现问题。错误: 错误:(34,17)错误:无法为最终变量c赋值 一直在烦我。我是一个新的android studio用户,我想解决这个问题。带红色下划线的c仅在我要增加它的onClick方法中 import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android

变量
c
出现问题。错误:

错误:(34,17)错误:无法为最终变量c赋值

一直在烦我。我是一个新的android studio用户,我想解决这个问题。带红色下划线的
c
仅在我要增加它的
onClick
方法中

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;


public class plane extends ActionBarActivity {
public final int c=0;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    getSupportActionBar().hide();
    setContentView(R.layout.activity_plane);
    final ImageView img=(ImageView)findViewById(R.id.iv);


    img.setImageResource(R.drawable.pe1);


    Button next=(Button)findViewById(R.id.btn_next);
    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(c==0){
            img.setImageResource(R.drawable.pe2);
            c=c+1;}

            if (c==1){
                img.setImageResource(R.drawable.pe3);
                c=c+1;}
            if (c==2){
                img.setImageResource(R.drawable.pe4);
                c=c+1;}
            if (c==3){
                img.setImageResource(R.drawable.pe5);
                c=c+1;}
        }
    });
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_plane, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

declaration
final
表示该变量的值只能分配一次。删除它以解决您的问题

改变

public final int c = 0;


从官方文件:

最终变量

变量可以声明为final。最后一个变量只能是 分配给一次。声明变量final非常有用 其值不会改变且有助于避免的文档 编程错误

这意味着您不能更改
c
的值,因为您将变量声明为
final

所以,改变

public final int c=0;


您只需要删除
final
修饰符,但我认为您有更严重的问题,那就是
onClick
中的逻辑。单击后,将执行所有if块,因为通过向
c
添加1满足每个if条件。你确定?我想你想要的是这样的:

switch (c){
   case 0: img.setImageResource(R.drawable.pe2);break;
   case 1: img.setImageResource(R.drawable.pe3);break;
   ...
} 
c++;

当用
final
声明变量时,它几乎意味着它是一个常量,并且它的值不能更改。顺便说一句,你在哪里申报

public int c=0;
switch (c){
   case 0: img.setImageResource(R.drawable.pe2);break;
   case 1: img.setImageResource(R.drawable.pe3);break;
   ...
} 
c++;