3 回答

TA贡献1784条经验 获得超7个赞
您可以使用 anObject[]
来执行此操作。但请不要。如果你觉得你需要在一个数组中混合不同的类型,也许是时候重新考虑你的设计了(这里有一个想法:在存储之前将 s 转换为 s 甚至 s String
)Integer
。int
将这些不同的数据类型存储在同一个数组中根本是不“正确的”。

TA贡献1802条经验 获得超6个赞
定义“更高效”通常意味着更少的存储空间或更少的处理器密集型。这些是截然相反的目标。挑战在于平衡它们。
您可以使用Object[]
前面所述的类型,但这需要确定类型,然后将每个元素转换为 aString
或Int
在使用之前。
装箱、转换为Object
类型和拆箱、转换为原始类型在 Java 中是相对昂贵的操作。
如果必须使用相同的数组索引存储它们,可能的解决方案:
如果不需要对
int
项做进一步的数学处理,使用.toString()
方法将其转换为aString
,并存储在s的数组中String
。如果 Integer 元素的数量会比
String
s 少很多,使用.toString()
方法将其转换为 aString
并将其存储在 s 的数组中String
。然后使用.(被认为是一个缓慢的操作)将 s 解析int
出来Integer.parseInt()
parseInt()
如果内存不是问题,请创建两个大小相同的单独数组,一个是 type
String
,另一个是 typeint
。选择一个作为主要(人口最多)。使用标志值(“” forString
和Integer.MIN_VALUE
forint
)来指示结果是其他类型,并且应该使用存储在其他数组中的值。这以使用更多内存为代价保留了公共索引。
如果可能,我建议重写代码以使用两个单独的数组。

TA贡献1864条经验 获得超6个赞
package ArrayPractice;
import java.util.ArrayList;
import java.util.Scanner;
public class Question8 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the array range: ");
int i= sc.nextInt();
int [] data= new int[i];
ArrayList<Object> testing= new ArrayList<>();
Object [] demo= new Object[i];
for (int y = 0; y < data.length; y++) {
System.out.println("Enter the Array number: " + y);
demo[y]= sc.next();
}
for(Object o: demo){
System.out.println(o);
}
}
}
添加回答
举报