【问题标题】:How cast from Float in object array to float variable?如何从对象数组中的浮点数转换为浮点变量?
【发布时间】:2011-06-23 01:47:33
【问题描述】:

您好,我从 sqlite 检索数据和一个 Float 值并在 arraylist 中返回:

if (!cursor.isAfterLast())
        {
            do
            {
                ....
                rowArray.add(cursor.getFloat(2));
                ....
            }
            while (cursor.moveToNext());
        }

当我尝试从列表中设置浮点变量时,浮点转换出现问题:

ArrayList<Object> row;
        row = db.getNameAsArray(name);

        mCurrentPrice=((Float)row.get(2)).floatValue();

此行中没有错误,但应用程序 FC。简单的浮动演员也不起作用。 谢谢任何答案。

Logcat:

02-07 22:34:19.537: ERROR/Retrieve Error(632): java.lang.ClassCastException: java.lang.String

02-07 22:34:21.217: WARN/System.err(632): java.lang.ClassCastException: java.lang.String 02-07 22:34:21.267: WARN/System.err(632): 在 com.testing.retrieveDrinkName(DatabaseActivity.java:222) 02-07 22:34:21.527: WARN/System.err(632): 在 android.os.Handler.handleCallback(Handler.java:587) 02-07 22:34:21.547: WARN/System.err(632): 在 android.os.Handler.dispatchMessage(Handler.java:92) 02-07 22:34:21.596: WARN/System.err(632): 在 android.os.Looper.loop(Looper.java:123) 02-07 22:34:21.657: WARN/System.err(632): 在 android.app.ActivityThread.main(ActivityThread.java:4363) 02-07 22:34:21.667: WARN/System.err(632): 在 java.lang.reflect.Method.invokeNative(Native Method) 02-07 22:34:21.737: WARN/System.err(632): 在 java.lang.reflect.Method.invoke(Method.java:521) 02-07 22:34:21.769: WARN/System.err(632): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 02-07 22:34:21.797: WARN/System.err(632): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 02-07 22:34:21.817: WARN/System.err(632): at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 使用 logcat 查看导致 FC 的错误。要查看 logcat,请在 eclipse 中切换到 DDMS 透视图或在命令行上运行 adb logcat。
  • 那么,名为“getNameAsArray”的方法返回浮点值?为什么?
  • 方法返回双精度、字符串和浮点值数组。
  • logcat 显示 java.lang.ClassCastException java.lang.String
  • 既然你有一个Objects 数组,也许你最好在演员之前做一个instanceof 检查?我敢打赌,你没有得到 Float 对象,而是试图投射其他东西。请提供您的 logcat 输出。

标签: java android


【解决方案1】:

正如您的最后一条评论所示,您正在尝试将 String 转换为 Float。您的代码并没有明确说明您要解决的问题,但如果您有一个 String 值并且想要一个 float,您可以这样做:

mCurrentPrice = Float.parseFloat(stringValue);

【讨论】:

  • @Hruskozrout 是的,堆栈跟踪显示它是一个 ClassCastException。您不能通过强制转换将字符串转换为浮点数,您需要使用 dave.c 描述的 parse 方法。
  • 感谢 dave.c 和 Mayra,使用 dave.c 方法,我在想什么时候做 rowArray.add(cursor.getFloat(2));它的 Float 看起来所有行都由字符串值表示。我必须再次查看我的代码。感谢您的宝贵时间。
  • 投反对票的人是否愿意解释他们认为这个答案可以如何改进?
猜你喜欢
  • 1970-01-01
  • 2021-12-30
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多