如何匹配两个并行数组的索引



我在文本文件中有一个列表,在名称和年龄之间交替。 有9个名字和9个年龄。

我需要显示我的程序

人员(在此处插入

姓名)的年龄最高:(在此处插入年龄)。

这是我到目前为止的代码:

     public class Names 
     {

public static void main(String[] args) throws Exception
{
      // get textfile
      Scanner input = new Scanner( new File("names_and_ages.txt") );

final String[] names= new String[9];
final int[] ages= new int[9];
int counter = 0;
while (input.hasNext()) //while not end-of-file
{
    names[counter]=input.next();  
    ages[counter]=Integer.parseInt(input.next());
    counter++;
}
highestAge(names, ages);
input.close();
}//end of main
public static void highestAge (String[] name, int[] age)
{
    String name;
int count = 0;
int oldest = highestAge[count];
for ( int number: highestAge)
{
    if (number > oldest)
        {
        oldest = number;
        }
}
System.out.print("Person " + name + " has the highest age: " + oldest );
}//end of Size method
}//end of class

所有编译我只是看不到使名称与年龄相匹配。 帮助?

如果您创建了一个 Person 类,则可以省去管理两个数组的麻烦。

这将是您的 Person 类:

class Person {
    String name;
    int age;
}
public static void highestAge(String[] names, int[] ages)
{
    //SET SENSIBLE DEFAULTS TO oldest AND index
    int index = 0;
    int oldest = ages[0];
    //Looping based on index
    for (int i = 0;  i < ages.length; i++)
    {
        if (ages[i] > oldest)
        {
           index = i;
           oldest = ages[i];
        }
}
System.out.print("Person " + names[index] + " has the highest age: " + ages[index] );
}//end of Size method

你离得不远了。 您需要维护一个最老年龄的"索引",然后您可以使用该索引在两个数组之间引用。

public static void highestAge (String[] names, int[] ages)
{
    String name
    int oldest = 0;
    int oldestIndex = -1;
    for (int index = 0; index < ages.length; index++) 
    {
        if (ages[index] > oldest)
        {
            oldest = number;
            oldestIndex = index;
        }
    }
    System.out.print("Person " + names[oldestIndex] + " has the highest age: " + oldest );
}//end of Size method

另外,我不知道您的示例如何编译,我没有看到highestAge声明的数组:P

就个人而言,我会创建一个以名称和年龄作为字段的Person类......

public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}

然后,我将在循环的每次迭代上创建一个新Person,并将它们添加到人员数组(Person[] people = new Person[...])(实际上,我会使用java.util.list的实现,但这就是我)

你突然得到很多创造力为你敞开心扉。

您可以提供一种isOlderThen(Person person)方法来将人员进行比较。

if (person.isOlderThen(oldest)) {
    oldest = person;
}

实际上,您只需使用Arrays.sortComparator根据每个人的年龄对数组进行排序

1) 创建一个类

class person
{
   String name;
   int    age;
}

2) 只创建一个数组:人[] 人

3)重写方法最高年龄

Person getOldest( Person[] persons )
{
   Person oldest = null;
   for( Person person : persons )
   {
      if( oldest == null || person.age > oldest.age )
      {
         oldest = person;
      }
   }
   return oldest;
}

相关内容

  • 没有找到相关文章

最新更新