0

これがコードです

@Override
  public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
      getAccelerometer(event);
    }

  }

  private void getAccelerometer(SensorEvent event) {
    float[] values = event.values;
    //Movement
    float x = values[0];
    float y = values[1];
    float z = values[2];

    float accelationSquareRoot = (x * x + y * y + z * z)
        / (SensorManager.GRAVITY_EARTH * SensorManager.GRAVITY_EARTH);
    long actualTime = System.currentTimeMillis();
    if (accelationSquareRoot >= 2) //
    {
      if (actualTime - lastUpdate < 200) {
        return;
      }


      if (distance <= 50 && distance > 40) {
        view.setBackgroundColor(Color.GREEN);
        while (distance > 0) {
              distance--;
              Integer.toString(distance);
              lastUpdate = actualTime;
              Toast.makeText(this, distance, Toast.LENGTH_SHORT)
                  .show();
              int distance = Integer.parseInt(distance);


        }

        if (distance < 40){
            view.setBackgroundColor(Color.YELLOW);
        }



      } else {
          view.setBackgroundColor(Color.RED);

      } 
      color = !color;
    }
  }

デバイスを振るたびに、距離変数を使用して縮小してトーストで表示しようとしています。

これは、コードが間違っている場所です。

  int distance = Integer.parseInt(distance);

変数の名前を変更してほしい。私がそうすると、私のループは機能しません。

前もって感謝します!

4

3 に答える 3

0

エラーは、同じ変数を 2 回宣言しているためです。また、で表示するために に変換distanceする必要はなく、 の前に追加するだけです。したがって、これを行うことで、これらの行を両方とも削除できます。StringToast"" +distance

Integer.toString(distance); 
int distance = Integer.parseInt(distance);
于 2013-09-06T02:13:47.833 に答える
0

では、距離を int から文字列に変換してから、もう一度変換していますか? この型変換の問題を解決するために、文字列に別の変数を使用できますか?

編集:カールとジビハンに殴られた. 彼らの答えは互いに補完し合っています。2 つの行を失う可能性があり、問題を解決できます。

于 2013-09-06T02:14:44.253 に答える