手记

Java中for-each遍历中获取下标进阶(运用API方法获取)

package com.yiqun.arraysforeach;
import java.util.Arrays;
public class Foreach {
/**

  • @question for-each方法遍历时如何使用API来获取下标
  • @target(终极版)for-each方法遍历时使用时API来获取下标
    *@return 需求:将一个数组进行排序(升序)并打印排序后各数组元素及其下标
  • @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] scores = { 89, 72, 64, 58, 93 };// 定义一个整型数组,并初始化数组
    System.out.print("数组scores排序前:");
    for (int score : scores) {
    System.out.print(score +" ");
    if (scores.length-1==Arrays.binarySearch(scores, score)) {
    System.out.println();
    }
    }
    Arrays.sort(scores);//对Arrays类对数组进行排序
    System.out.print("数组scores排序(升序)后:");
    for (int score : scores) {
    System.out.print(score +" ");
    }
    System.out.println("\n"+"排序后其中各元素对应数组下标为:");
    //使用for-each遍历输出数组中的元素及其下标,而非自定义计数器变量的伪下标
    for (int score : scores) {
    int index = Arrays.binarySearch(scores, score);
    System.out.println("数组中元素:"+score+" 其 对应下标为: "+index );
    }
    }
    }
    说明:
    针对慕课http://www.imooc.com/code/1864大量提问for-each问答,截至目前没有给出Java强逻辑的解答,
    在此补充最佳方案:for-each遍历时,使用Java-API方法获取下标: Arrays.binarySearch(scores, score);。
    补充:可以将此思路推广到集合遍历元素时。
8人推荐
随时随地看视频
慕课网APP

热门评论

if (scores.length-1==Arrays.binarySearch(scores, score)) { System.out.println(); }

这句语句能详细说明下嘛?

问一下为啥用foreach语句输出数组后得到的都是一串串奇怪的数字和符号,但用传统的for循环输出就是正常的

查看全部评论