查找数组的中间元素

时间:2015-11-02 06:25:11

标签: java arrays

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");



        }


    }

}

2 个答案:

答案 0 :(得分: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]);
                }
}

答案 1 :(得分:1)

这是另一个解决方案。它当然不那么优雅,但为初学者量身定制。它使用模数运算符检查偶数或奇数长度,调整使用零索引数组,然后根据结果做出决定。

在main()中声明一个String并通过调用此方法对其进行初始化,并将您的names数组作为参数传入。然后在下一行中打印String。

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;
}