Я немного потерял, где я пошло не так вот мой главный файл:Java: Печать только первый и последний, когда имена, которые пользователь дал в алфавитном порядке
import java.util.Scanner;
import java.util.Arrays;
import java.util.*;
import java.util.TreeSet;
public class personSorter
{
public static void main(String[] args)
{
int count = 0;
Scanner in = new Scanner(System.in);
boolean more = true;
Person first = null;
Person last = null;
Person[] people= new Person[10]; //my array
while(more)
{
System.out.println("Please enter the person's name or a blank line to quit");
String names = in.nextLine();
if (names.equals(""))
{
more = false;
}
else
{
Person p1 = new Person(names); //creating 10 person objects to be used
Person p2 = new Person(names);
Person p3 = new Person(names);
Person p4 = new Person(names);
Person p5 = new Person(names);
Person p6 = new Person(names);
Person p7 = new Person(names);
Person p8 = new Person(names);
Person p9 = new Person(names);
Person p10 = new Person(names);
people[count] = p1; // using my person objects and declaring the index of variable count
people[count] = p2;
people[count] = p3;
people[count] = p4;
people[count] = p5;
people[count] = p6;
people[count] = p7;
people[count] = p8;
people[count] = p9;
people[count] = p10;
first = people[count];
last = people[count];
TreeSet<String> treeSet = new TreeSet<String>(); //using TreeSort to get the names entered by user in ascending order
treeSet.add(names);
treeSet.add(names);
treeSet.add(names);
treeSet.add(names);
treeSet.add(names);
treeSet.add(names);
treeSet.add(names);
treeSet.add(names);
treeSet.add(names);
treeSet.add(names);
first.compareTo(p1); //after TreeSort first compare method called of first object as it is now the first name in alphabet order
last.compareTo(p10); //after TreeSort last compare method called of last object as it is now the last name in alphabet order
count++;
}
}
//printing out the first and last name(in alphabet order) of the entered names
System.out.println("First: " + first.toString());
System.out.println("Last: " + last.toString());
}
}
Я использовал TreeSet организовать имена в алфавитном порядке. Затем я использовал вызов метода compareTo для объектов 1 и 10 только потому, что, когда они упорядочены в порядке алфавита, первым объектом становится первое имя, а последний объект становится фамилией.
Вот Person.java:
public class Person implements Comparable <Person>
{
private String name;
public Person(String n)
{
name = n;
}
public String getName()
{
return name;
}
@Override
public int compareTo(Person others)
{
if (name.compareTo(others.name) == 1)
{
return 0;
}
else if (name.compareTo(others.name) < 0)
{
return -1;
}
else
{
return 1;
}
}
public String toString()
{
return "[" + name + "]";
}
}
Однако окончательный вывод все имена, введенные пользователем в порядке, введенному его. Как и в, имена не были даже в алфавитном порядке. Любая помощь была бы очень оценена!
Несколько вопросов: почему вы всегда создаете 10 объектов на основе вашего ввода? И почему вы никогда не увеличиваете счетную переменную при заполнении массива? Вы всегда назначаете новый объект Person одному элементу массива. –
Извините, но ваш код полный беспорядок. Похоже, вам нужно узнать много чего, прежде чем беспокоиться о том, что порядок сортировки неверен. –
Начните с этого: чтобы ваша программа напечатала введенные вами имена без какой-либо попытки поместить их в дерево. На данный момент даже это не работает. –