ArrayList 对象运行时输入被视为字符串

我正在尝试将对象添加到 ArrayList,在静态输入期间,它工作正常


class ArrayListDemo4

{

    public static void main(String[] args) 

    {

        Collection cl = new ArrayList();

        cl.add(true);cl.add("Hello");cl.add(6.55f);cl.add(566);

        out.println(cl);


        for(Object o: cl)

            System.out.println(o.getClass());

    }

}

输出:


D:\COLLECTIONS>java ArrayListDemo4

[true, Hello, 6.55, 566]

class java.lang.Boolean

class java.lang.String

class java.lang.Float

class java.lang.Integer

当我尝试对运行时输入执行相同操作时,getClass() 仅作为字符串给出。我注意到next()有 2 个具有不同返回类型的签名public java.lang.String next(), public java.lang.Object next()和对 Object 的通用控制台输入


class ArrayListDemo3 

{

    public static void main(String[] args) 

    {

        Scanner  input = new Scanner(in);

        List cl = new ArrayList(4);


        out.println("Enter the objects to the ArrayList:");

        for (int i =0; i < 4; i++ )

        {out.print("cl["+i+"]   =  ");  cl.add((Object)input.next());   }

        out.println(cl);


        for(Object o: cl)

        {out.println(o.getClass());}

    }

}

输出:


Enter the objects to the ArrayList:

cl[0]   =  true

cl[1]   =  Hello

cl[2]   =  6.55f

cl[3]   =  566

[true, Hello, 6.55f, 566]

class java.lang.String

class java.lang.String

class java.lang.String

class java.lang.String

有人可以纠正/帮助我 - 我如何获得运行时输入值的相应对象类型?


阿波罗的战车
浏览 86回答 1
1回答

凤凰求蛊

查阅java.util.Scannerjavadoc,你会发现next()总是返回String.同时java.util.Scanner有很多方法可以获取特定类型的值:nextBoolean(),&nbsp;nextByte(), 等。另外,我强烈建议:不要使用原始类型的集合。Java 有很好的泛型机制。因此,如果您正在学习 -这是一个很好的开始资源。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java