【发布时间】:2014-01-07 00:22:43
【问题描述】:
好的,所以我尝试使用 3 个单独的条件来获得奇数、偶数和负数
%2=0、%2!=0 和
但是,如果说该数字不属于我放入 element at [i] = null; 的条件,我会收到一条错误消息,说无法从 int 转换为 null 添加强制转换整数
- Type mismatch: cannot convert from
null to int
然后,如果我继续转换整数,我会收到此错误
Exception in thread "main" java.lang.NullPointerException
at Server.getEven(Server.java:10)
at Main.main(Main.java:10)
现在我们还没有在我的计算机课上学过投射,我的老师不会接受我的投射作业,即使它不起作用。
我想知道我是否可以通过将我的 3 个数组存储在服务器中并在客户端中只输入单个数组来完成这个项目
即我的偶数数组、奇数数组、负数数组,全部存储并打印在服务器中,而仅在客户端中拥有“用户输入的数组”是我的代码
客户
import java.util.Scanner;
public class Main {
public static void main (String[] args){
Scanner input = new Scanner(System.in);
int [] array = new int[10];
System.out.print("Insert the 10 values of your array.");
for(int i=0; i<array.length; i++){
array[i] = input.nextInt();
}
int[] even = Server.getEven(array);
int[] odd = Server.getOdd(array);
int[] neg = Server.getNeg(array);
System.out.println("The even numbers in the array are...");
System.out.println(even);
System.out.println("The odd numbers in the array are...");
System.out.println(odd);
System.out.println("The negative numbers in the array are...");
System.out.println(neg);
input.close();
}
}
服务器
public class Server {
public static int[] getEven(int[] array){
int[] even = new int[array.length];
for(int i=0; i<array.length; i++){
if(array[i]%2 ==0){
even[i] = array[i];
}
else
{ even[i] = null;// <-- here it asks me to do (Integer) null;
}
}
return even;
}
public static int[] getOdd(int[] array){
int[] odd = new int[array.length];
for(int i=0; i<array.length; i++){
if(array[i]%2 !=0){
odd[i] = array[i];
}
else
{ odd[i] = null; // <-- here it asks me to do (Integer) null;
}
}
return odd;
}
public static int[] getNeg(int[] array){
int[] neg = new int[array.length];
for(int i=0; i<array.length; i++){
if(array[i]<0){
neg[i] = array[i];
}
else
{ neg[i] = null; // <-- here it asks me to do (Integer) null;
}
}
return neg;
}
}
【问题讨论】:
-
好的,所以我已经尝试过你建议做 Integer[] 但现在它给了我这个......数组中的偶数是...... [Ljava.lang.Integer;@3fe329eb数组中的奇数是... [Ljava.lang.Integer;@5ad52411 数组中的负数是... [Ljava.lang.Integer;@5f3306ad
-
这是因为正在使用对象 toString 方法打印数组。而不是
System.out.println(even);使用 for 循环并打印每个元素。 -
尝试使用
System.out.println(Arrays.toString(yourArray))进行打印。 -
@JavaDevil 不错的一个:) +1。更多信息:stackoverflow.com/questions/5415604/tostring-java-of-arrays
-
您真的需要阵列中的孔吗?如果我得到
{3, 2, 8, 1, 6, 5, 9}作为输入,我希望getEven返回{2, 8, 6},而不是{<hole>, 2, 8, <hole>, 6, <hole>, <hole>}。如果您不需要这些漏洞,那么这将影响我们建议的解决方案。