Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在数组中查找元素的索引?_Java_Arrays - Fatal编程技术网

Java 如何在数组中查找元素的索引?

Java 如何在数组中查找元素的索引?,java,arrays,Java,Arrays,我想解决一个问题: 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, 2

我想解决一个问题:

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];
}
int最小值=0;
for(int i=1;i次数[i]){
最小值=i;
}
}
System.out.println(名称[最小]);
这应该可以完成任务

int最小值=0;
for(int i=1;i次数[i]){
最小值=i;
}
}
System.out.println(名称[最小]);

这应该可以完成任务

以这种方式调用数组_变量[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索引=0;
for(int i=0;i
以这种方式调用数组变量[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索引=0;
for(int i=0;i
这种情况下最简单的方法是:

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索引=0;
for(int i=0;i

但如果您使用包含一对名称和数字的Map,则效果会更好。

对于这种情况,最简单的方法是:

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索引=0;
for(int i=0;i
但如果您使用包含姓名和号码对的地图,效果会更好。

如何:

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]);
公共类测试{
公共静态void main(字符串[]args)
{
字符串[]名称={
“埃琳娜”、“托马斯”、“汉密尔顿”、“苏西”、“菲尔”、“马特”、“亚历克斯”,
“艾玛”、“约翰”、“詹姆斯”、“简”、“艾米丽”、“丹尼尔”、“内达”,
“亚伦”,“凯特”
};
int[]次={
341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299,
343, 317, 265
};
int最快=整数最大值;
int slowestrunner=0;
for(int i=0;i
那么:

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]);
公共类测试{
公共静态void main(字符串[]args)
{
字符串[]名称={
“埃琳娜”、“托马斯”、“汉密尔顿”、“苏西”、“菲尔”、“马特”、“亚历克斯”,
“艾玛”、“约翰”、“詹姆斯”、“简”、“艾米丽”、“丹尼尔”、“内达”,
“亚伦”,“凯特”
};
int[]次={
341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299,
343, 317, 265
};
int最快=整数最大值;
int slowestrunner=0;
for(int i=0;i
您能做些什么:

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

for (int i = 0; i < array.length; i++) {
    if(times[i] < fastest)
        fastest = times[i];
        fastestIndex = i;
}
要获取名称,请执行以下操作:

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

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

要获取名称?

只需使用字段跟踪索引,如下所示:

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(names[indexOfFastest]);

而是为了更好的实践。

只需使用一个字段来跟踪索引,如下所示:

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(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]);
int=0;
for(int i=1;i
这对我很有效

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]);
int=0;
for(int i=1;i
为什么不跟踪索引并在循环时使用它呢?改用
HashMap
?尝试放置
System.out.println(names[i])在for循环中,在这种情况下,最后一个输出将是最快的,但我只想要1个输出为什么不跟踪索引并在循环时使用它呢?使用
HashMap
?尝试放置
System.out.println(名称[I])
在for循环中,在这种情况下,最后一个输出将是最快的,但我只需要比数组.asList(names).get(indexOfFastest)
@Dukeling sure多1个输出。请解释一下原因?我想我可以说写更多的代码,调用2个方法并构造一个类,最终只运行与前者相同的代码,但我想这更多的是一个最佳实践问题。@Dukeling Okay:)我明白了。而不是
names[indexofastest]
数组.asList(name).get(indexOfFastest)
@Dukeling当然。请解释一下原因?我想我可以说写更多的代码,调用2个方法并构造一个类,最终只运行与前一个相同的代码,但我想这更多的是一个最佳实践问题。@Dukeling好的:)我明白了。谢谢你的回答,它成功了,我做到了
int-slo