Java 使用Math.max运算符查找数组中的前两个数字
我正在做一个java项目,我必须找到马拉松时间的前两个值。我已经创建了数组,但我需要找到数组中的前两个数字。我可以在Java中使用Math.max操作符吗。以下是代码btw:Java 使用Math.max运算符查找数组中的前两个数字,java,arrays,math,max,operator-keyword,Java,Arrays,Math,Max,Operator Keyword,我正在做一个java项目,我必须找到马拉松时间的前两个值。我已经创建了数组,但我需要找到数组中的前两个数字。我可以在Java中使用Math.max操作符吗。以下是代码btw: class Marathon { public static void main (String[] arguments) { String[] names = { "Elena", "Thomas", "Hamilton", "Suzie", "Phil",
class Marathon {
public static void main (String[] arguments) {
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 };
for (int i = 0; i < names.length; i++) {
System.out.println(names[i] + ": " + times[i]);
}
}
}
职业马拉松{
公共静态void main(字符串[]参数){
String[]name={“Elena”、“Thomas”、“Hamilton”、“Suzie”、“Phil”,
“马特”、“亚历克斯”、“艾玛”、“约翰”、“詹姆斯”、“简”,
“艾米丽”、“丹尼尔”、“内达”、“艾伦”、“凯特”};
int[]次={341,273,278,329,445,402,388,275,243,334,412,
393, 299, 343, 317, 265 };
for(int i=0;i
最好为结果创建一个包含名称和时间的类。让该类实现Compariable,然后只使用Collections.sort()
并获取前两个元素
大概是这样的:
class RaceResult implements Comparable
{
final int time;
final String name;
RaceResult(String name, int time)
{
this.time = time;
this.name = name;
}
@Override
public int compareTo(Object o)
{
return new Integer(time).compareTo((Integer)((RaceResult)o).time);
}
@Override
public String toString()
{
return name + "(" + time + ")";
}
}
马拉松课:
class Marathon {
List<RaceResult> results = Arrays.asList(new RaceResult("Elena", 341),
new RaceResult("Thomas", 273),
new RaceResult("Hamilton", 278));
public static void main(String[] args)
{
Collections.sort(results);
System.out.println("Winner: " + results.get(0));
System.out.println("2nd place: " + results.get(1));
}
}
职业马拉松{
列表结果=Arrays.asList(新的RaceResult(“Elena”,341),
新比赛结果(“托马斯”,273),
新的结果(“汉密尔顿”,278));
公共静态void main(字符串[]args)
{
收集。排序(结果);
System.out.println(“获胜者:+results.get(0));
System.out.println(“第二名:+results.get(1));
}
}
一种无需创建特殊类即可完成此操作的方法:在for循环中遍历数组,通过将int数组的每个元素与“max”变量进行比较来找到最大值,然后在找到最大值后,保存它,从数组中删除该项,然后再次扫描以查找最大值。。。。这一次将是第二个最大的数字,因为第一个最大的数字已经被删除。您可以通过数组O(n)循环
编辑:把问题读错。。。对于2 Math.max,我建议只使用if测试
int[] times = {
341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299,
343, 317, 265
};
Integer max1 = null, max2 = null;
for(int i=0;i<times.length;i++) {
if(max2 == null || max1 == null || max1 <= times[i]) {
max2 = max;
max1 = times[i];
}
}
System.out.println("max1: " + max1 + " max2: " + max2);
int[]次={
341, 273, 278, 329, 445, 402, 388, 275, 243, 334, 412, 393, 299,
343, 317, 265
};
整数max1=null,max2=null;
对于(int i=0;iYes,你可以使用Math.max。你试过吗?认真的!!!这可以通过简单的搜索得到答案。请使用google和Duplicate。投票关闭