[英]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.