2015-06-21 54 views
1

我是新來的Java,我試圖輸出這個數組: -5,-2,-12,7,3,15,10如何輸出與數字陣列和某些格式

要查找正是這樣: [0:-5,1:-2,2:12,3:7,4:3,5:15,6:10]

public static void array(int[] numbers) { 
     int index = 0; 
     System.out.print("["); 
     for (int i = 0; i < numbers.length; i++){ 
      System.out.print(index + ": " + numbers[i] + ", "); 
      index ++; 
     } 
     System.out.print("]"); 
} 

當我運行我的代碼看起來完全像它應該除了在10之後有一個逗號。 關於如何擺脫最後一個逗號或更好的方式來做到這一點的任何想法?

感謝您的幫助! CK

+0

爲了記錄在案,你的'index'和'i'這裏始終是相同的值,所以你不要他們兩個都不需要。如果你喜歡爲了可讀性而使用'index'這個名字,你可以使用索引代替我。 – Gary

+0

可能的重複[最簡單的方式來逗號分隔列表(Java)?](http://stackoverflow.com/questions/668952/clearest-way-to-comma-delimit-a-list-java) – ChrisGuest

+1

@ChrisGuest ,我不認爲這是重複的(至少是這個問題),因爲這個問題是關於數組(而不是列表),並且OP想要在輸出中包含索引。 –

回答

1

當您在for循環中讀取最後一個數組索引時,不需要在打印語句中添加逗號。在這裏你去:

for (int i = 0; i < numbers.length; i++){ 
     if(i == numbers.length -1) { 
      System.out.print(index + ": " + numbers[i]); 
     } else { 
      System.out.print(index + ": " + numbers[i] + ", "); 
     } 
     index ++; 
    } 
1

由於需要逗號每次但最後一次,你可以做這樣的事情:

System.out.print(index + ": " + numbers[i] + (i != numbers.length-1 ? ", " : ""); 

這將打印出一個逗號除了在最後一關的時候。

此外,由於i從零變爲極限,因此不需要index變量。你可以用i代替`index'。

1

如果if語句不是最後一個索引,那麼只能輸出逗號。

for (int i = 0; i < numbers.length; i++){ 
    System.out.print(i + ": " + numbers[i]); 
    if(i != numbers.length -1) { 
     System.out.print(", "); 
    } 
} 

或者,打印循環前面的第一個元素,然後在它之前用逗號打印每個後續元素。

System.out.println(0 + ": " + numbers[0]); 

for (int i = 1; i < numbers.length; i++){ 
    System.out.print(", " + index + ": " + numbers[i]); 
} 
+0

您的第一個解決方案僅在最後索引爲 –

+0

Woops時纔打印逗號,感謝那個捕獲 – Gary

1

我想實現這樣的方法(注意index在你的實現是多餘的,因爲它總是等於i):

public static void printArray(int[] numbers) { 
    StringBuilder sb = new StringBuilder(); 

    for (int i = 0; i < numbers.length; i++) { 
     if (sb.length() > 0) { 
      sb.append(", "); 
     } 
     sb.append(String.format("%d: %d", i, numbers[i])); 
    } 
    System.out.print("[" + sb.toString() + "]"); 
} 

我使用StringBuilder這使得它很容易(和有效)從數組內容中組成一個String。當你想創建格式化輸出時,String.format很有用。

1
System.out.print("["); 
for (int i = 0; i < numbers.length; i++){ 
    if(numbers.length -1==i) 
     System.out.print(i+ ": " + numbers[i]); 
    else 
     System.out.print(i + ": " + numbers[i] + ", ");   
} 
System.out.print("]"); 
1

有了一些細微的變化,以您的代碼:

public static void array(int[] numbers) { 
     //Check if the array isn't empty, you know, just in case ;) 
     if (numbers.length == 0) { 
      return 
     } 
     System.out.print("[ 0"); 
     for (int i = 0; i < numbers.length - 1; i++){ 
      System.out.print(": " + numbers[i] + ", " + (i+1)); 
     } 
     System.out.print(": " + numbers[numbers.length-1] + " ]"); 
} 

從而造成 [ 0: -5, 1: -2, 2: 12, 3: 7, 4: 3, 5: 15, 6: 10 ]