簡體   English   中英

ArrayList對象的運行時輸入被視為字符串

[英]ArrayList Objects runtime inputs being treated as Strings

我試圖將對象添加到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()僅以String形式給出。 我注意到next()有2個簽名,具有不同的返回類型public java.lang.String next(), public java.lang.Object next()和對象的通用控制台輸入

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

有人可以糾正/幫助我-如何獲得運行時輸入值的相應對象類型?

咨詢java.util.Scanner javadoc,您將發現next()始終返回String

同時, java.util.Scanner有很多方法可以獲取特定類型的值: nextBoolean()nextByte()等。

另外,我強烈建議: 不要使用原始類型的集合 Java具有很好的泛型機制。 因此,如果您正在學習中- 是開始的好資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM