将Integer数组转换为int数组的最佳方法是什么?
它的简单解决方案是:
public int[] toPrimitiveInts(Integer[] ints) {
int[] primitiveInts = new int[ints.length];
for(int i = 0; i < ints.length; i++) {
primitiveInts[i] = ints[i] == null ? 0 : ints[i];
}
return primitiveInts;
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我采用0了null对象/包装器的默认值为null并且int为0这一事实的值.
但我找不到将Integer []转换为int []的简单方法.
可能重复:
当我们有包装类时,为什么支持原语?
如果存在使Java纯面向对象语言的Wrapper类,那么为什么有可以在Java中使用的Primitive数据类型???
我想传递myVector给另一个类(Case.java)但我得到这种错误消息.类型不匹配:无法从Object []转换为int [].谁能告诉我怎么解决这个问题?
User.java
JButton btnNewButton = new JButton("Process");
btnNewButton.setBounds(360, 296, 89, 23);
contentPane.add(btnNewButton);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Integer a = (comboBox.getSelectedIndex() + 1);
Integer b = (comboBox_1.getSelectedIndex() + 1);
Integer day = (comboBox_2.getSelectedIndex() + 1);
ArrayList<Integer> myVector = new ArrayList<Integer>();
myVector.add(a);
myVector.add(b);
myVector.add(day);
Case ca = new Case();
try {
ca.addPlace(myVector);
LoginGUI um = new LoginGUI();
um.setVisible(true);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} …Run Code Online (Sandbox Code Playgroud) 因此,这是检查日期范围内可用房间的方法的一部分,旨在返回可用房间号的 int [] 数组。
ArrayList roomNums = new ArrayList();
roomNums.toArray();
for (Room room: rooms){
int roomNumber = room.getRoomNumber();
if(room.getRoomType() == roomType && isAvailable(roomNumber, checkin, checkout)){ // This works fine, ignore it
roomNums.add(roomNumber);
}
}
return roomNums.toArray(); // Error here, return meant to be int [] type but it's java.lang.Obeject []
Run Code Online (Sandbox Code Playgroud)
错误发生在 roomNums.toArray() 的末尾
我看到别人做了这个衬里,它对他们有用,为什么不适合我?
roomNums 中的每个元素都是一个整数。(我认为)
打印包含可用房间的整数数组的最快和最简单的方法是什么?我是否需要创建一个循环,或者我可以用这个 .toArray() 一个衬垫或类似的东西做一些事情吗?
谢谢
我有一个ArrayList,当我尝试将其转换为一个整数数组,因为我需要做涉及整数的操作,我得到这个错误:
需要不兼容的类型:
找到int [] :java.lang.Object []
这是我的代码:
List<Integer> ids_rdv = new ArrayList<Integer>();
// I execute an SQL statement, then :
while (resultat.next()) {
ids_rdv.add(resultat.getInt("id_rdv"));
}
int[] element_rdv_id = ids_rdv.toArray(); //Problem
Run Code Online (Sandbox Code Playgroud)
你对此有什么想法吗?
在Java中,低于最快的解决方案:
public convert(ArrayList<Integer> IntegerList) {
int s = IntegerList.size();
int[] intArray = new int[s];
for (int i = 0; i < s; i++) {
intArray[i] = IntegerList.get(i).intValue();
}
}
Run Code Online (Sandbox Code Playgroud)
?
是否有任何直接的方法将int数组转换为Integer数组,并逐个元素地循环.
蛮力的方式将是
int [] a = {1,2,3};
Integer [] b = new Integer[a.length];
for(i =0; i<a.length; i++)
b[i]= i;
Run Code Online (Sandbox Code Playgroud)
在整个阵列中旅行有没有直接的方法?
我正在尝试创建一个方法来创建给定数字的素因子列表,然后将它们返回到数组中.除了将ArrayList转换为Array之外,一切似乎都能正常工作.另外,我不确定我是否正确返回数组.
这是我的代码......
static int[] listOfPrimes(int num) {
ArrayList primeList = new ArrayList();
int count = 2;
int factNum = 0;
// Lists all primes factors.
while(count*count<num) {
if(num%count==0) {
num /= count;
primeList.add(count);
factNum++;
} else {
if(count==2) count++;
else count += 2;
}
}
int[] primeArray = new int[primeList.size()];
primeList.toArray(primeArray);
return primeArray;
Run Code Online (Sandbox Code Playgroud)
它在我编译时返回此错误消息...
D:\JAVA>javac DivisorNumber.java
DivisorNumber.java:29: error: no suitable method found for toArray(int[])
primeList.toArray(primeArray);
^
method ArrayList.toArray(Object[]) is not applicable
(actual argument int[] cannot be converted to Object[] by …Run Code Online (Sandbox Code Playgroud) 我已经花了几个小时试图寻找解决方案.
我的程序要求用户输入整数列表(例如:5 2 5 6 6 1).然后我想创建一个数组并连续地将每个整数存储到它各自的数组索引中.
这是我的程序的一部分我遇到了麻烦(这个程序的目的是通过以后的方法执行计算,但我没有包含它):
import java.util.Scanner;
public class Assignment627 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int x = 0;
int[] list1Array = new int[1];
System.out.println("Enter list1: ");
while (input.hasNext()){
list1Array[x] = input.nextInt();
x++;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在实例化数组"list1Array",但问题是我不知道用户将输入多少个整数!如果只有一种方式可以知道输入了多少整数...任何帮助将不胜感激!谢谢,塞巴斯蒂安