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