2015-11-02 123 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; 
}