【问题标题】:Using Loops to convert int to string then back to int使用循环将 int 转换为字符串,然后再转换回 int
【发布时间】:2013-09-10 00:31:39
【问题描述】:

这是代码

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

它要我更改变量的名称。如果我这样做,我的循环将无法工作。

提前致谢!

【问题讨论】:

  • 虽然它不在您的代码 sn-p 中,但变量 distance 已经在有问题的行之前的某处声明,并且您不能在同一范围内为新声明的变量重用相同的名称.要么删除前面的 int 声明,要么使用另一个变量名。

标签: java android string loops int


【解决方案1】:

您为什么不将距离保留为 int 值并在您的 Toast 中使用 String.format() 呢?即

Toast.makeText(this, String.format("%d", distance), Toast.LENGTH_SHORT).show();

从 UI 的角度来看,我不确定我是否愿意在循环的每次迭代中都向 Toast 消息发送垃圾邮件,也许更新 TextView 小部件可能会更好。

【讨论】:

    【解决方案2】:

    错误是因为您声明了两次相同的变量。此外,您无需将distance 转换为String 即可在Toast 中显示,只需在distance 之前添加"" +。因此,通过这样做,您可以删除这两行:

    Integer.toString(distance); 
    int distance = Integer.parseInt(distance);
    

    【讨论】:

      【解决方案3】:

      所以您将距离从 int 转换为字符串,然后再转换回来?你可以为你的字符串使用另一个变量来避免这种类型转换的麻烦吗?

      编辑:被 Karl 和 jbihan 击败。他们的回答相得益彰。您可以丢失两行并解决您的问题。

      【讨论】:

        猜你喜欢
        • 2016-03-18
        • 1970-01-01
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-14
        • 1970-01-01
        相关资源
        最近更新 更多