i have a list in a text file that alternates between name and age. there are 9 names and 9 ages.
i need my program to display
Person (insert name here) has the highest age: (insert age here).
here is my code so far:
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
everything compiles i just can't seen to make the name match the age. help?
If you created a Person class, you could save yourself the trouble of managing two arrays.
This would be your Person class:
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
You're not far off. You need to maintain an "index" to the oldest age, which you can then use to reference between the two arrays.
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
Also, I don't know how your example compiles, I don't see the array highestAge
declared any where :P
Personally, I'd create a Person
class that has the name and age as fields...
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;
}
}
I would then create a new Person
on each iteration of the loop and add them to an array of people ( Person[] people = new Person[...]
) (actually, I'd use an implementation of a java.util.list
but that's me)
You suddenly get a whole lot of creativity opening up for you.
You could provide a isOlderThen(Person person)
method to compare people together.
if (person.isOlderThen(oldest)) {
oldest = person;
}
You actually just sort the array based on the age of each person, using Arrays.sort
and a Comparator
1) create a class
class person
{
String name;
int age;
}
2) create only one array: Person[] persons
3) Rewrite the method highestAge
Person getOldest( Person[] persons )
{
Person oldest = null;
for( Person person : persons )
{
if( oldest == null || person.age > oldest.age )
{
oldest = person;
}
}
return oldest;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.