【问题标题】:How do I compare an arrays set of elements and return the desired elements如何比较一组元素并返回所需的元素
【发布时间】:2019-09-08 01:50:56
【问题描述】:

我正在构建一个程序,它必须获取一组信息(跑步者和他们的时间)并制定一个方法来比较所有跑步者的时间。我是初学者,知道的不多,必须坚持我所知道的。我需要在 2017 年获得最低的跑步者,请引导我朝着正确的方向前进。 (想学习却得不到答案!!!)谢谢!

我试图比较数组中的所有整数,但这似乎很长而且错误

public static void main(String[] args) {
    int runnersTime2017 [] = {357, 299, 432, 326, 275, 450, 265, 343, 264, 308, 242, 377, 273};
    int runnersTime2018 [] = {341, 307, 328, 283, 274, 359, 256, 323, 269, 308, 249, 340, 238};
    fastestRunner2017(runnersTime2017);


 }

public static int fastestRunner2017(int Array1 []){ //This is what I am trying to do


    if (Array1[1] <= Array1[]){

        System.out.println(T1);

        return T1;

    }
    //This is what I did before and seemed wrong
    else if (T2 <= T1 && T2 <= T3 && T2 <= T4 && T2 <= T5 && T2 <= T6 && T2 <= T7 && T2 <= T8 && T2 <= T9 && T2 <= T10 && T2 <= T11 && T2 <= T12 && T2 <= T13){

        System.out.println(T2); 

        return T2;
    }    

    else if (T3 <= T1 && T3 <= T2 && T3 <= T4 && T3 <= T5 && T3 <= T6 && T3 <= T7 && T3 <= T8 && T3 <= T9 && T3 <= T10 && T3 <= T11 && T3 <= T12 && T3 <= T13){

        System.out.println(T3);

        return T3;
    }

    else if (T4 <= T1 && T4 <= T2 && T4 <= T3 && T4 <= T5){
        System.out.println(T4);

        return T4;
    }

    else {

        System.out.println(T13);
        return T13;

    }

我想将数组的一部分与其余部分进行比较

【问题讨论】:

标签: java


【解决方案1】:

解决此问题的最直接方法是for-loop

如果我在这里理解您的情况,您将获取第一个数组的每个值并将其与第二个数组的每个值进行比较。如果第一个数组值大于每个值,则打印它。否则取较大的值。比如:

foundValue = runnersTime2017[0];
for (int i = 0; i < runnersTime2017.length; ++i) {
    for (int j = 0; j < runnersTime2018.length; ++j) {
        if (runnersTime2018[j] > runnersTime2017[i]) {
            foundValue = runnersTime2018[j];
         }
    }
}
return foundValue;

请注意,这也是一种效率相对较低的方法 (O(n^2)),但对于初学者来说,它应该足够了,无需费力。

【讨论】:

  • 是的,这与我需要的非常接近,但是如果我需要前 3 名的参赛者,我将如何提取一个特定的数字
  • 那么您将需要三个“foundValue”变量来跟踪每个变量。此外,您需要更多逻辑来将三个“foundValues”中的每一个与您比较的每个新数组值进行比较。我将留给你的确切机制,但如果我是你,我会从第一个数组中的三个第一个值开始,创建一个函数,将这些值中的最小值与每个新值进行比较,如果新值大于三个中的最小值,则对照其他两个进行检查。如果您需要跟踪很多,也许保留一个新数组是个好主意。
【解决方案2】:

如何对 Int 数组进行排序并取第一个或最后一个值

     int runnersTime2017 [] = {357, 299, 432, 326, 275, 450, 265, 343, 264, 308, 242, 377, 273};

        int runnersTime2018 [] = {341, 307, 328, 283, 274, 359, 256, 323, 269, 308, 249, 340, 238};

       List<Integer> allRunner= new ArrayList<>(runnersTime2017.length+runnersTime2018.length);

     for(int r7 :runnersTime2017) {
         allRunner.add(r7);

     }
     Collections.sort(allRunner);
     //this prints the 2017 runners after storting
     System.out.println(allRunner);
     for(int r8 :runnersTime2017) {
         allRunner.add(r8);
     }
     //now sort again after adding 2018 runners  
     Collections.sort(allRunner);
     System.out.println(allRunner);

【讨论】:

  • 谢谢,但其中一些我不熟悉的代码是否有另一种对数字进行排序的方法
  • Java 内置了各种集合类型的排序算法。它并没有比 Collections.sort(allRunner) 简单得多。我不确定这是什么混淆?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
相关资源
最近更新 更多