Java / Androidの間(真)が正常に動作していません

123:

編集します

私はいくつかのコードを変更し、コメントに基づいてより多くの記述を追加しました。:)

編集2

私は次のようにwhileループを使用せずに同じ機能を実行する方法を発見しました。

if (lastDay != currentDay) 
    {
      lastDay = currentDay;
      //reset counter
      daily_counter = 0;
    }
  if (lastDay == currentDay)
    {
      daily_counter++;
    } 

私はに1を加えることを望んでいcountた場合lastDayと同じですcurrentDay

しかし、ときlastDay == currentDay、それは最初の実行後に1を追加しません。

ここに私のJavaコードは次のとおりです。

//get current day
Calendar calendar = Calendar.getInstance();
int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
SharedPreferences settings = getSharedPreferences("PREFS", 0);
int lastDay = settings.getInt("day",0);

//compare current day and last day
while (true) {
                    if (lastDay == currentDay) {
                        SharedPreferences.Editor editor = settings.edit();

                        //If a user collected an item, increase the daily counter
                        daily_counter++;

                        //commit to system
                        editor.putString("daily_counter", Integer.toString(daily_counter));

                        //commit
                        editor.commit();

                        //move to detailed description
                        Intent int1 = new Intent(bottom_nav_camera_yes_button.this, bottom_nav_search_details.class);
                        startActivity(int1);

                        break;

                    } else {
                        SharedPreferences.Editor editor = settings.edit();
                        editor.putInt("day", currentDay);

                        //reset counter
                        daily_counter = 0;
                    }
                }

念の誰のニーズに、私はC ++に精通していて、次のように、それは私のC ++コードで作業しています:

#include <iostream>
using namespace std;

int main()
{
  int lastDay, currentDay, daily_counter = 0;

  cout << "enter last day: " << endl;
  cin  >> lastDay;

  cout << "enter current day: " << endl;
  cin  >> currentDay;

  while (true) 
  {
    if (lastDay == currentDay) 
    {
      daily_counter++;
      break;
    } 
    else
    {
      lastDay = currentDay;
      //reset counter
      daily_counter = 0;
    }
  }

  cout << "daily counter: " << daily_counter << endl;

  return 0;
}
quealegriamasalegre:

このちょうどカウンターかどうかを確認するために、まだイマイチの作業をしてみてください

//get current day
    Calendar calendar = Calendar.getInstance();
    int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
    SharedPreferences settings = getSharedPreferences("PREFS", 0);
    int lastDay = settings.getInt("day",0);
    int daily_counter=Integer.valueOf(settings.getString("daily_counter","0"));

SharedPreferences.Editor editor = settings.edit();

//compare current day and last day

                if (lastDay == currentDay) {

                    //If a user collected an item, increase the daily counter
                    daily_counter++;

                    //commit to system
                    editor.putString("daily_counter", Integer.toString(daily_counter));

                    //commit
                    editor.commit();

                    //move to detailed description
                    Intent int1 = new Intent(bottom_nav_camera_yes_button.this, bottom_nav_search_details.class);
                    startActivity(int1);

                    break;

                } else {

                    editor.putInt("day", currentDay);
                    //commit
                    editor.commit();
                    //reset counter
                    daily_counter = 0;
                }

カウンターたら、それを実行した後、それは1、その後2と上のようになりますそれを2回実行した後に0にする必要があります。あなたはまだそれを保証するいくつかのコードを追加する必要がありますのみ1日1回実行されます

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=347873&siteId=1