2014-03-28 67 views
0
public String toString(){ 
    String allstr=""; 
    for (int i=0 ; i<this.myArray.length; i++){ 
    } 

    for (int i=capacity-1 ; i>=0 ; i--){ 
     allstr=(this.myArray[i] + " ") + allstr ; 
    } 
    return allstr; 
} 

此代碼打印我的數組的所有元素,包括被初始化的0。我怎麼排除他們?記住我的程序允許在數組中輸入0。所以輸入的零= = =初始化零。例如,如果一個數組有5 3 2 1 0 0 -1和第一個零是由我輸入我如何刪除第二個零,這是因爲我的數組的初始化。上面的代碼是項目的一部分。只是一種方法。如何打印輸入所有初始化零的數組的所有元素?

+1

你的第一個for循環沒有做任何事......其次,myArray是一個整數數組嗎? – Gee858eeG

回答

0

好吧,如果你的陣列是這樣的:

int[] myArray = {0, 0, 0, 0, 0}; 

您可以創建布爾數組。假設真正的價值是它是由用戶輸入的,如果它被初始化,則爲假。

boolean[] isChanged = {false, false, false, false, false}; 

您更改數組,你只需要比你的toString方法爲「改變」

isChanged[i] = true; 

,以紀念這個值每次或輸入一個新值()將

public String toString(){ 
    String allstr=""; 
    for (int i = 0; i < this.myArray.length; i++){ 
     if (isChanged[i] == true) 
      allstr = allstr + (this.myArray[i] + " "); 
    } 

    return allstr; 
} 
0

這樣做的最好方法是用List<Integer>代替靜態數組。

在此處閱讀關於ArrayList

示例代碼:

List<Integer> myArray = new ArrayList<Integer>(); 
for (int i = 0; i < 10; i++) { 
    if (i % 2 == 0) { 
     myArray.add((int) ((Math.random() * 5) + 1)); 
    } 
} 

System.out.println(Arrays.toString(myArray.toArray(new Integer[] {})).replaceAll(
     "[\\[,\\]]", "")); 
+0

hm忘了提及用戶可以輸入所有可能的值。所以這不會很不幸。另外我必須用0初始化數組。 – user3474553

0

使用的int數組,有沒有辦法告訴你設置爲零值,和一個初始化的區別吧。但是,如果您創建的是一個數組,則可以區分0和null。

例如使用Integer

Integer[] list = new Integer[3]; 
list[0] = 1; 
list[1] = 0; 
for (int i = 0; i < list.length; i++) { 
    System.out.println(list[i]); 
} 

輸出

1 
0 
null 

相比於使用int

int[] list = new int[3]; 
list[0] = 1; 
list[1] = 0; 
for (int i = 0; i < list.length; i++) { 
    System.out.println(list[i]); 
} 

輸出:

1 
0 
0 
0

如果您擁有的是一組基本數字(如int),那麼根本無法區分初始化期間放置的零和輸入產生的零。您可以使用其他方法來跟蹤數據,例如boolean的並行數組,以跟蹤該值是來自輸入還是輸入的元素列表。

另一種方法是使用一組Number對象,並使用特殊的對象來表示初始零,如BigInteger.ZERO。來自輸入的所有其他人將是IntegerBigDecimal。通過使用不同的類進行初始化與輸入,混合的機會較小。順便說一句,你應該使用for-each語法,如果你正在迭代地構建一個字符串,那麼就應該使用StringBuilder

StringBuilder buf = new StringBuilder(); 
boolean first = true; 
for (Number num : array) { 
    if (num != BigInteger.ZERO) { 
    if (first) { 
     first = false; 
    } 
    else { 
     buf.append(' '); 
    } 
    buf.append(num); 
    } 
} 
return buf.toString(); 

而是手動構建的字符串,你可以使用任何的各種等價物的string.join是Java沒有,由不同的第三方庫提供的。

相關問題