2013-03-23 56 views
0

我應該聲明一個15整數數組並返回包含原始數組的正整數的第二個數組。我無法從該方法返回第二個數組。如何將原始數組的正值返回到新數組中

import java.util.Scanner; 
    public class array4 
    { 
     public static void main(String [] args) 
     { 
     int [] num = new int[15]; int [] positives = new int [15]; 
     getInput(num); 
     positives = getPositives(num); 
     printResults(num, positives); 
     } 
     public static void getInput(int [] num){ 
     int x; 
     Scanner kbd = new Scanner(System.in); 
     System.out.println("Enter 15 integers"); 
     for(x = 0; x < 15; x++) 
    num[x] = kbd.nextInt(); 

    } 
    public static int getPositives(int [] num){ 
    int position = 0; 
    int [] positive = new int [15]; 
    for(int i =0; i < num.length; i++){ 

     if(num[i] >=0) { 
     positive[position] = num[i]; 
     position++; }} 
    return positive; 
    } 


    public static void printResults(int [] num, int [] positives){ 
    System.out.println("You entered"); int x; 
    for(x = 0; x < num.length; x++) 
    System.out.println(num[x]); 
    System.out.println("Your positive integers are "); 
    for(x = 0; x < positives.length; x++) 
    System.out.println(positives[x]);}} 
+0

對於初學者來說,你打電話getPositives()的時候,你已經宣佈getPositive() – 2013-03-23 19:35:05

回答

1

它是public static int[] getPositive()。返回類型是一個整數數組,但您將其聲明爲int

+0

是否有申報第二陣列的尺寸更簡單的方式,使當我打印它時,它沒有給零用於未使用的插槽? – ComSci 2013-03-23 19:51:41

+0

你可以'返回java.util.Arrays.copyOfRange(正數,位置)',它給出了數組的一個拷貝,其元素從0到'position-1'。 – Javier 2013-03-23 19:56:40

1

getPositive你是返回一個int,而不是int[]

我覺得你的方法是有缺陷的,但。

如果您創建一個ArrayList並將正數放在那裏,然後將該列表轉換爲一個數組,那麼您的數組中不會有任何空的位置。

1

您需要聲明getPositive返回數組:

public static int[] getPositive(int [] num){ 

而且,你不需要在main()方法來初始化positive。這只是分配一個數組將被丟棄。

0

你的方法必須返回整數數組而不是一個整數值。下面是修改後的代碼:

public static int[] getPositive(int [] num){ 
int position = 0; 
int [] positive = new int [15]; 
for(int i =0; i < num.length; i++){ 

    if(num[i] >=0) { 
    positive[position] = num[i]; 
    position++; }} 
return positive; // Wont give compilation error now 

}

相關問題