[英]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.