catman2
catman2

Reputation: 27

Ending an array with an input

I am new to java and I am currently trying to make a program that uses an array of 10 inputted names and ages. What I want to do is add an option so that if the user types "done" when prompted to enter a name, the program will skip straight to listing the names and ages already entered.

Code:

import java.util.Arrays;

public class array2 {
    public static void main(String[] args) {
        java.util.Scanner input = new java.util.Scanner(System.in);

        input.useDelimiter(System.getProperty("line.separator"));

        int numofpeople = 10;
        Person[] persons = new Person[numofpeople];

        for (int i = 0; i < numofpeople; i++) {
            System.out.print("Enter the person's name: ");
            String person = input.next();
            System.out.print("Enter the persons's age: ");
            int age = (Integer) input.nextInt();
            persons[i] = new Person(person, age);
        }
        
        Arrays.sort(persons);

        System.out.print("Name" + "\tAge");
        System.out.print("\n----" + "\t----\n");

        for (int i = 0; i < persons.length; i++) {
            System.out.println(persons[i].person + "\t" + persons[i].age);
        }

        System.out.println("The oldest person is: " + persons[numofpeople-1].person);
        System.out.println("The youngest person is: "+ persons[0].person);

    }

}

class Person implements Comparable<Person> {
    public String person;
    public Integer age;
    public Person(String s, Integer g) {
        this.person = person;
        this.age = g;
    }

    @Override
    public int compareTo(Person o) {
        return (this.age>o.age?1:-1);
    }
}

What I'm thinking is that I need to use a boolean if statement that defines whether or not done has been entered, and if it has, then the program skips asking the user for the rest of the names and ages and instead jumps to printing the already entered ones. I am not sure on this so, any help would be appreciated!

Upvotes: 0

Views: 207

Answers (3)

stylo0
stylo0

Reputation: 86

Your thought is correct, the simplest way would be checking if person is equal to "done". If this is true, break the loop and code should continue, and it should produce the result you want.

Upvotes: 2

MehranB
MehranB

Reputation: 1525

this also jumps out of the for loop and moves on to printing the list if the user types in "done":

    for (int i = 0; i < numofpeople; i++) {
        System.out.print("Enter the person's name: ");
        String person = input.next();

        if(person == "done"){break;}

        System.out.print("Enter the persons's age: ");
        int age = (Integer) input.nextInt();
        persons[i] = new Person(person, age);
    }

Upvotes: 0

fr3ddie
fr3ddie

Reputation: 406

You can do comething like this:

for (int i = 0; i < numofpeople; i++) {
            System.out.print("Enter the person's name: ");
            String person = input.next();

            if (!person.equals("done")) {
                System.out.print("Enter the persons's age: ");
                int age = (Integer) input.nextInt();
                persons[i] = new Person(person, age);
            } else {
                //print table or enter here a break; directive
            }
        }

If user enter done instead of any name, your program will straight to listing the names and ages already entered.

Upvotes: 0

Related Questions