2015-11-02 144 views
0

Java新手在這裏。 我有下面的代碼,我希望它返回數組的中間元素。我該如何解決這個問題?我不想僅僅手動返回位置5和6的元素,這裏是元素的中位數。我會以一種適用於任何數組類型的方式,即使或奇數。查找數組的中間元素

 /** 
* Created by root on 2/11/15. 
*/ 
import java.util.Scanner; 
import java.util.Arrays; 

public class test { 



    public static void main(String[] args){ 

     Scanner scan = new Scanner(System.in); 
     //Create a string array to store the names 
String arrayOfNames[] = new String[10]; 
System.out.print("Enter 10 names\n"); 
     for (int i = 0; i < arrayOfNames.length; i++) { 

      System.out.print("\n" + (i+1) + " : "); 

      arrayOfNames[i] = scan.nextLine(); 

     } 

     //show name one by one 
    Arrays.sort(arrayOfNames); 
    System.out.print("Names "); 

     for (int i = 0; i < arrayOfNames.length; i++) { 

      System.out.print("" + (i+1) + " : "); 

      System.out.print(arrayOfNames[i] + "\n"); 



     } 


    } 

} 
+0

@維諾德......正如他所說的應該是5和6 – Rehman

+0

應爲5和6,雖然只是通過把arrayOfNames在指數5 – pycod333

回答

2

收件的方法等:

void printMiddleofArray(String[] arrayOfNames) { 
    if (arrayOfNames.length %2 ==0) 
       { 
        System.out.println(arrayOfNames[arrayOfNames.length /2]); 
        System.out.println(arrayOfNames[(arrayOfNames.length /2)-1]); 
       } else { 
        System.out.println(arrayOfNames[(arrayOfNames.length /2)-1]); 
       } 
} 
+0

爲什麼在運行程序由2個返回值?如果元素的總數不是10,應該選擇5(10/2)和6(10/2 + 1) – Rehman

+0

它應該是-1,因爲它返回第6和第7個元素 – pycod333

+0

@Vinod .. Oops ..對不起..我錯過了..謝謝指出...我編輯 – Rehman

1

下面是另一種解決辦法步步。當然,它不那麼優雅,但爲初學者量身定製。它使用模運算符來檢查偶數或奇數長度,調整使用零索引數組,然後根據結果做出決定。

在main()中聲明一個String,並用對此方法的調用對它進行初始化,並將name數組作爲參數傳入。然後在下一行中打印字符串。

public String returnMiddleElement(String[] input){ 

    /* Initialize result variable */ 
    String result = ""; 

    /* Determine if the array is odd or even */ 
    int value = input.length % 2; 

    /* Obtain the middle index */ 
    int middleIndex = input.length/2; 

    /* Adjust for the zero index of arrays */ 
    int evenMid = middleIndex - 1; 

    if(value == 0){ 
     /* The array is even, so obtain the two middle elements */ 
     result += input[evenMid] + "\n" + input[(evenMid+1)]; 
    } 
    else{ 
     /* The array is odd, so obtain the single middle element */ 
     result += input[middleIndex]; 
    } 

    return result; 
}