簡體   English   中英

如何找到數組中元素的索引?

[英]How to find the index of an element in an array?

我正在嘗試解決這個問題:

String[] names = {
"Elena", "Thomas", "Hamilton", "Suzie", "Phil", "Matt", "Alex",
"Emma", "John", "James", "Jane", "Emily", "Daniel", "Neda",
"Aaron", "Kate"
};

int[] times = {
341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299,
343, 317, 265
};

基本上有2個數組,一個用於名稱,一個用於時間,數組索引是匹配的(例如Elena的時間是341),我必須找到最快的跑步者,所以時間最小的人是最快的。

首先,我發現了times數組中的最小值。

for (int i = 0; i < array.length; i++) {
    if(times[i] < fastest)
        fastest = times[i];
}

但是我不知道如何將名稱數組與時間數組匹配,我嘗試了一下但是沒有用

System.out.println(Arrays.asList(names).indexOf(fastest));

怎么樣:

public class test {


public static void main(String[] args)
{

    String[] names = {
            "Elena", "Thomas", "Hamilton", "Suzie", "Phil", "Matt", "Alex",
            "Emma", "John", "James", "Jane", "Emily", "Daniel", "Neda",
            "Aaron", "Kate"
            };

            int[] times = {
            341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299,
            343, 317, 265
            };

            int fastest = Integer.MAX_VALUE;
    int slowestRunnner = 0;

            for (int i = 0; i < times.length; i++) {
                if(times[i] < fastest)
                {
                    fastest = times[i];
                    slowestRunnner = i;
                }
            }

            System.out.println(names[slowestRunnner]);
}
}

System.out.println(names[slowestRunner]);
int minimum = 0;
for(int i = 1; i < times.length; i++){
    if(times[minimum] > times[i]){
        minimum = i;
    }
}
System.out.println(names[minimum]);

這應該做的工作

你能做:

var fastest = '';
var fastestIndex = '';

for (int i = 0; i < array.length; i++) {
    if(times[i] < fastest)
        fastest = times[i];
        fastestIndex = i;
}

然后使用:

names[fastestIndex]

得到名字?

稱這種方式array_variable [index]

int index = 0;
for (int i = 0; i < array.length; i++) {
 if(times[i] < fastest){
    fastest = times[i];
    index = i;
 }
}
System.out.println(names[index]);

這種情況的最簡單方法是:

int index = 0;
for (int i = 0; i < array.length; i++) {
    if(times[i] < fastest) {
        fastest = times[i];
        index = i;
    }
}
System.out.println(names[index]);

但是,如果使用包含名稱和數字對的Map,會更好。

只需使用一個字段來跟蹤索引為:

int indexOfFastest = 0;
int fastest = Integer.MAX_VALUE; // this initialization makes sure first element is assigned to fastest within the iteration
for (int i = 0; i < array.length; i++) {
    if(times[i] < fastest) {
        fastest = times[i];
        indexOfFastest = i;
    }
}

並進一步將您現有的代碼修改為

System.out.println(Arrays.asList(names).get(indexOfFastest));

編輯 -由於轉換為List的代碼最終會執行與在索引處獲取數組元素的值相同的評估。 請喜歡使用

System.out.println(names[indexOfFastest]);

而是更好的做法。

對我有用

int fastest=0;
        for (int i = 1; i < times.length; i++) {
            if(times[i] < times[fastest])
                fastest = i;}
        System.out.println("Fastest runner is "+names[fastest]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM