【问题标题】:How to use Floats with Map<> getParams()如何在 Map<> getParams() 中使用浮点数
【发布时间】:2019-06-18 06:23:17
【问题描述】:

我正在将数据发送到我的 ``.php` 脚本文件,该文件将这些数据存储到我的数据库中。

为此,我使用Map&lt;String, String&gt;getParams()

但是,我对 Java 还很陌生,不知道如何从 Params 返回Float

我需要在这里更改什么才能返回Floats

我不断收到 Map 必须是 &lt;String, String&gt; 的错误。

我尝试使用各种语句更正 Map 和 getParams,但没有奏效。我还尝试删除 ,修复了任何错误,但应用程序崩溃了。

    protected Map<String, String> getParams() throws AuthFailureError {
        //Here is what I think i need to change
        Map <String, String>params = new HashMap();
        params.put("tire", tire);
        params.put("tire2", tire2);
        // tire and tire 2 are floats
        return params;
    }

我希望返回 params 将第一个选项返回为 String,第二个选项返回为 Float

【问题讨论】:

  • 您的问题不清楚:如果您在方法的签名中声明它返回从字符串到字符串的映射,为什么在方法内部您要尝试从字符串返回映射到浮点?二、声明新地图的方式应该是:new HashMap&lt;&gt;()IIRC

标签: java hashmap


【解决方案1】:

地图的值类型是String,因此您需要将值转换/格式化为该值。你可以使用Float.toString(float):

params.put("tire", FLoat.toString(tire));

或者您可能希望使用特定的小数位数来格式化您的数字(此处四舍五入为两点):

params.put("tire", String.format("%.2f", tire));

【讨论】:

  • 问题是我的 .php 文件,我的数据库希望该文件是 Float。
  • 这些参数是干什么用的?如果它们是 HTTP 请求参数,那么它们在任何情况下都将作为字符串发送,并且需要在另一端解析为所需的类型——PHP 不是静态类型的应该允许您轻松地将数字字符串转换为数字.
【解决方案2】:

您需要更改方法签名才能返回其他对象/类型。 所以将Map&lt;String, String&gt; 更改为Map&lt;String, Float&gt;

protected Map<String, Float> getParams() throws AuthFailureError {
    Map <String, Float>params = new HashMap<>();
    params.put("tire", 1.0f);
    params.put("tire2", 2.0f);
    return params;
}

【讨论】:

  • 我已经厌倦了。我的地图收到错误消息:“从 com.android.volley.toolbox.StringRequest 派生的匿名类中的“getParams()”与“com.android.volley.Request”中的“getParams()”发生冲突;尝试使用不兼容返回类型”
  • 我假设你想覆盖this method。在这种情况下,您不能返回 Map 以外的任何内容。您必须将浮点数作为字符串传递并在 .php 端转换为浮点数。
  • 重命名方法时会发生什么?
  • @Donat Rashin 完全正确。如果 op 收到此错误,则它由 StringRequest 派生。因此,您需要将浮点数转换为字符串。
  • @MapReduce,是的,Rashin 是对的。我添加我的评论时没有看到他的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 2012-06-08
  • 2017-09-10
  • 1970-01-01
相关资源
最近更新 更多