2017-04-06 43 views
-1

我的Java程序出現問題。我是Java的新手,只是無法弄清楚它到底是什麼問題。總之,我已經在main中聲明瞭一個數組和一個變量,我創建了我的方法調用並希望我的數組通過變量傳遞給我的方法。然後我會喜歡這個方法來取我的數組並計算我的變量「8」發生的次數,從數組中移除8並返回一個新的更小的數組回到main。以下是我的代碼如下。我感覺好像我只是缺少一個代碼塊的任何建議?陣列方法問題

public class Harrison7b 
{ 
    public static void main(String [] args) 
    { 
     int[] arrayA = {2,4,8,19,32,17,17,18,25,17,8,3,4,8}; 
     int varB = 8; 
     // Call with the array and variable you need to find. 
    int[] result = newSmallerArray(arrayA, varB); 

    for(int x = 0; x < arrayA.length; x++) 
    { 
     System.out.print(arrayA[x] + " "); 


    } 

    } 

    public static int[] newSmallerArray(int[] arrayA, int varB) 
    { 
     int count = 0; 

     for(int x = 0; x < arrayA.length; x++) 
     { 
     if(arrayA[x] == varB) 
     { 
      count++; 
     } 
     } 
     int [] arrayX = new int[arrayA.length - count]; 




     for(int B = 0; B < arrayA.length; B++) 
     { 
     if(arrayA[B] != varB) 
     { 

     } 
     } 
     return arrayX; 
    } 
} 
+0

你的問題是什麼? –

+0

爲什麼我的代碼沒有返回沒有8 – Clark1776

+0

的新數組,所以你想刪除數組中的'8'? –

回答

0

你實際上並不需要返回數組,因爲當你傳遞一個數組的方法你傳遞它的內存地址,意味着它,你改變,因此相同的地址,這也將改變主要方法arraysA因爲你只是改變了相同的內存ADRESS

import java.util.*; 




public class Help 
{ 


public static void main(String[] args) 
{ 
    ArrayList<Integer> arraysA = new ArrayList<Integer>(); 
    arraysA.add(Integer.valueOf(2)); 
    arraysA.add(Integer.valueOf(4)); 
    arraysA.add(Integer.valueOf(8)); 
    arraysA.add(Integer.valueOf(19)); 
    arraysA.add(Integer.valueOf(32)); 
    arraysA.add(Integer.valueOf(17)); 
    arraysA.add(Integer.valueOf(17)); 
    arraysA.add(Integer.valueOf(18)); 
    arraysA.add(Integer.valueOf(25)); 
    arraysA.add(Integer.valueOf(17)); 
    arraysA.add(Integer.valueOf(8)); 
    arraysA.add(Integer.valueOf(3)); 
    arraysA.add(Integer.valueOf(4)); 
    arraysA.add(Integer.valueOf(8)); 
    int varB=8; 
    newSmallerArray(arraysA,varB); 
    for(Integer i:arraysA) 
    { 
     System.out.println(i); 
    } 


} 
public static void newSmallerArray(ArrayList<Integer> arraysA,int varB) 
{ 
    for(int i=0;i<arraysA.size();++i) 
    { 
     if(Integer.valueOf(arraysA.get(i))==varB) 
     { 
      arraysA.remove(i); 
     } 
    } 
} 

}的值

0

試試這個代碼就不會需要循環:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(arrayA)); 
list.removeAll(Arrays.asList(8)); 
arrayA = list.toArray(array); 
+0

賦值需要使用for循環\ – Clark1776

+0

我不同意你的看法,請看看這個問題回答: http://stackoverflow.com/questions/112503/如何-DO-I-除去對象從 - 一個陣列式的Java –