簡體   English   中英

如何將一個數組輸入與另一個數組輸入相關聯?

[英]How do I relate one array input to another?

假設我有 2 個掃描儀填充 arrays、 name[]age[] 每一個都按順序填寫。 如果我要找到數組中最年長的人,我該如何使用 arrays 打印出他們的名字和年齡? 例如, age[]中最大的條目是78 有沒有辦法將它與name[]數組關聯起來打印出來?

參考代碼:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("How many entries ?");

    int entries;
    do {
        entries = input.nextInt();
        if (entries < 1) {
            System.out.println("please enter a valid number!");
        }
    } while (entries < 1);

    String[] name = new String[entries];
    String[] gender = new String[entries];
    int[] age = new int[entries];

    for (int i = 0; i < entries; i++) {
        System.out.println("Enter the name of person No" + (i + 1) + ".");
        name[i] = input.next();
    }

    double ageSum = 0;
    int max = 0;
    for (int i = 0; i < entries; i++) {
        System.out.println("How old is " + name[i] + " ?");
        age[i] = input.nextInt();
        ageSum += age[i];
        max = Math.max(max, age[i]);
    }

    System.out.println("the oldest person is "
            + name[] + " whose " + max + " years old.");
}

假設您的 arrays 具有相同的大小和對應於名稱的年齡,那么您可以檢查最高年齡並存儲具有最高年齡的元素的索引。

然后你在這個索引中有你的名字。

int highestAgeIndice = 3; //indice of element with age 97 as example

names[highestAgeIndice] // the corresponding name

計算最高年齡並存儲其索引

int max = 0;
int highestInd = 0;
for (int i = 0; i < age.length; i++) {
    if (age[i] > max) {
        max = age[i];
        highestInd = i;
    }
}

System.out.println("the oldest person is " +
        name[highestInd] + " whose " + max + " years old.");

代碼

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("How many entries ?");

    int entries;
    do {
        entries = input.nextInt();
        if (entries < 1) {
            System.out.println("please enter a valid number!");
        }
    } while (entries < 1);

    String[] name = new String[entries];
    String[] gender = new String[entries];
    int[] age = new int[entries];

    for (int i = 0; i < entries; i++) {
        System.out.println("Enter the name of person No" + (i + 1) + ".");
        name[i] = input.next();
    }

    double ageSum = 0;
    for (int i = 0; i < entries; i++) {
        System.out.println("How old is " + name[i] + " ?");
        age[i] = input.nextInt();
        ageSum += age[i];
    }

    int max = 0;
    int highestInd = 0;
    for (int i = 0; i < age.length; i++) {
        if (age[i] > max) {
            max = age[i];
            highestInd = i;
        }
    }
    System.out.println("the oldest person is " +
            name[highestInd] + " whose " + max + " years old.");
}

如果你有兩個 arrays name[]age[] ,你可以通過創建一些 class Person與這些 arrays 中的條目類型的字段來關聯它們,並獲得人員List<Person> ,如下所示:

static class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() { return name; }
    public int getAge() { return age; }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + '}';
    }
}
public static void main(String[] args) {
    String[] name = {"Junior", "Senior", "Middle"};
    int[] age = {25, 78, 40};

    List<Person> people = IntStream.range(0, name.length)
            .mapToObj(i -> new Person(name[i], age[i]))
            .collect(Collectors.toList());

    // sort by age in reverse order
    people.sort(Comparator.comparing(
            Person::getAge, Comparator.reverseOrder()));

    // output
    people.forEach(System.out::println);
}

Output:

Person{name='Senior', age=78}
Person{name='Middle', age=40}
Person{name='Junior', age=25}

另請參閱:如何對兩個 arrays 進行排序?

您可以在數組 age 上使用 indexOf 作為 Max age,它會告訴您關聯名稱的索引。

名字[age.indexOf(Max)]

假設我有 2 個掃描儀填充 arrays, name[]age[] 每個都按順序填寫。 如果我要找到數組中最年長的人,如何使用 arrays 打印出他們的姓名和年齡? 例如, age[]中最大的條目是78 有沒有辦法將它與name[]數組關聯起來打印出來?

參考代碼:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("How many entries ?");

    int entries;
    do {
        entries = input.nextInt();
        if (entries < 1) {
            System.out.println("please enter a valid number!");
        }
    } while (entries < 1);

    String[] name = new String[entries];
    String[] gender = new String[entries];
    int[] age = new int[entries];

    for (int i = 0; i < entries; i++) {
        System.out.println("Enter the name of person No" + (i + 1) + ".");
        name[i] = input.next();
    }

    double ageSum = 0;
    int max = 0;
    for (int i = 0; i < entries; i++) {
        System.out.println("How old is " + name[i] + " ?");
        age[i] = input.nextInt();
        ageSum += age[i];
        max = Math.max(max, age[i]);
    }

    System.out.println("the oldest person is "
            + name[] + " whose " + max + " years old.");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM