【问题标题】:How to cast object to int through method?如何通过方法将对象转换为int?
【发布时间】:2014-01-27 21:03:30
【问题描述】:
public static int toInt(Object a)
{
    return (int) a;
}

public static Object tInput()
{
    return read.nextLine();
}

当我尝试时

public static void main (String []args)
{
     System.out.println( toInt(tInput()) );
}

我得到一个类转换异常——即使我输入了数字!!!整数!

我不知道我做错了什么。谁能帮忙?

====编辑====
人们说我不能转换它,因为它是一个字符串。
我尝试了另一种方法,这很有效。
有人可以解释吗?

public static void check()
{
    Object h = 2014;
    int a = (int) h;
    System.out.println(a);
}

【问题讨论】:

  • read 是什么,nextLine 返回什么?
  • 您编辑中的代码起作用的原因是因为存储在h 中的对象的运行时类型是int。您用来引用它的引用h 是一个可以包含任何Object 的引用。由于您为其分配了int 值,因此您可以将其转换为int,因为您将int 转换为int。如果你改为使用Object h = "Hi mom!"; int a = (int) h;,那么你会得到一个类强制转换异常,因为你试图将String 强制转换为int
  • 没有将任意对象“投射”到int 的通用方法。 “转换”操作断言所引用的变量是被转换为的类型,或者(仅在基元的情况下)可以使用明确定义的技术转换为该类型。您显然想要做的是将 String 转换为 int。在这种情况下,将参数声明为 String 并使用 Integer.parseInt。将参数声明为 Object 只会延迟到运行时出现可以在编译时检测到的错误。

标签: java object casting int


【解决方案1】:
read.nextLine(); //returns a string.

您不能将字符串转换为整数,因此我将使用Integer.parseInt(str) 首先将字符串解析为整数,然后再进行转换。尝试将您的 tInput() 方法更改为以下方法

public static Object tInput()
{
    return Integer.parseInt(read.nextLine());
}

如果需要,请查看 Integer.parseInt(String) 的 Java 文档

Integer#parseInt

【讨论】:

    【解决方案2】:
    public static int toInt(Object obj)
    {
          return Integer.parseInt((String) obj);
    }
    
    
    
    public static void main (String []args)
    {
         System.out.println( toInt(tInput()) );
    }
    

    【讨论】:

      【解决方案3】:

      Strings 不是Integers(尤其不是ints)。你不能施放它们,你需要转换。 String 可以通过 Integer.parseInt(myString) 转换为 int

      【讨论】:

        【解决方案4】:

        您不能将String 转换为int

        试试这个:

        int myInt = Integer.valueOf(tInput().toString());
        return myInt;
        

        【讨论】:

          【解决方案5】:

          如果你的对象是这样的字符串,你可以使用:

              int i = Integer.valueOf((String) object);
          

          如果你的对象是一个整数,你可以用大小写:

             int i = (Integer) object;
          

          这两种方法都有异常的风险,所以你需要相应地处理。

          【讨论】:

            猜你喜欢
            • 2011-04-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-29
            • 1970-01-01
            • 2014-12-02
            • 2017-09-26
            相关资源
            最近更新 更多