Java 在不使用if语句的情况下,向后迭代数组,减少计数器。模的逆

Java 在不使用if语句的情况下,向后迭代数组,减少计数器。模的逆,java,android,arrays,Java,Android,Arrays,我有一个数组和两个按钮(下一个和上一个)。 单击“下一步”按钮时,MCCurrent索引将更新(++),光标将指向列表中的下一项,而“上一步”按钮则指向相反的项 String[] fruits = {"Pineaple", "Orange", "Banana", "Apple"}; int mCurrentIndex = 0; 这是按钮的事件处理程序: nextButton.setOnClickListener(new View.OnClickListener() { @Over

我有一个数组和两个按钮(下一个和上一个)。 单击“下一步”按钮时,MCCurrent索引将更新(++),光标将指向列表中的下一项,而“上一步”按钮则指向相反的项

String[] fruits = {"Pineaple", "Orange", "Banana", "Apple"};
int mCurrentIndex = 0;
这是按钮的事件处理程序:

 nextButton.setOnClickListener(new View.OnClickListener() {

     @Override
     public void onClick(View view) {
         mCurrentIndex = (mCurrentIndex + 1) % fruits.length;
         updateFruit();
     }
 });



prevButton.setOnClickListener(new View.OnClickListener() {


 @Override
    public void onClick(View view) {
        mCurrentIndex = (mCurrentIndex - 1);
        if(mCurrentIndex < 0){
            mCurrentIndex = fruits.length - 1;
        }
        updateFruit();
    }

 });
nextButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
mcurrentidex=(mcurrentidex+1)%fruits.length;
更新柚子();
}
});
prevButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
mcurrentidex=(mcurrentidex-1);
如果(mCurrentIndex<0){
mCurrentIndex=果长-1;
}
更新柚子();
}
});
代码工作正常。但我想知道是否有办法将之前的Button代码重构为下一个Button代码(使其更短),方法是删除if语句并替换为模的倒数(如果它存在的话),它仍然可以工作

在每种情况下,当mCurrentIndex到达数组末尾时,它都会被重置

代码工作正常。但我想知道是否有可能 可以将上一个按钮代码重构为下一个按钮 通过消除if语句并替换 用一个模的倒数(如果它存在的话)和 仍然可以工作

我应该这样做

代码工作正常。但我想知道是否有可能 可以将上一个按钮代码重构为下一个按钮 通过消除if语句并替换 用一个模的倒数(如果它存在的话)和 仍然可以工作

应该这样做

我想你可以用

public void onClick(View view) {
    mCurrentIndex = (fruits.length + (mCurrentIndex - 1)) % fruits.length;
    updateFruit();
}
我想你可以用

public void onClick(View view) {
    mCurrentIndex = (fruits.length + (mCurrentIndex - 1)) % fruits.length;
    updateFruit();
}
用一种方法,

  updateFuit(int refIndex) {
       mCurrentIndex = (mCurrentIndex + refIndex) % fruits.length;
       // Do rest of the updates..
  }
对于按钮

 nextButton.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
        updateFruit(1);
   }
 });

 prevButton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
        updateFruit(fruits.length - 1);
  });
用一种方法,

  updateFuit(int refIndex) {
       mCurrentIndex = (mCurrentIndex + refIndex) % fruits.length;
       // Do rest of the updates..
  }
对于按钮

 nextButton.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
        updateFruit(1);
   }
 });

 prevButton.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
        updateFruit(fruits.length - 1);
  });

看起来很有前途。。。我会试试看。。。我会试试的,非常感谢,非常感谢,非常感谢。