JAVA help Need bolded lines fixed for it to compile Thank yo
JAVA help
Need bolded lines fixed for it to compile. Thank you!
public class PersonSort
{
// Test file. Format is \"STRING int int int\"
static final String PERSON_FILE = \".\\\\src\\\\Persons.txt\";
public static void main(String[] args) throws FileNotFoundException
{
// Create new ArrayList<Person> and populate from test file
ArrayList<Person> list1 = new ArrayList<Person>();
populate(list1);
// Create new array with same people
ArrayList<Person> list2 = new ArrayList<Person>(list1);
insertionSort(list1);
// Print result of sort
System.out.println(\"INSERTION SORT\");
// *** foreach Person p in list1
{
System.out.println(p.toString());
}
selectionSort(list2);
System.out.println();
System.out.println(\"SELECTION SORT\");
// *** foreach Person p in list2
{
System.out.println(p.toString());
}
}
/*
* populate - this method reads the Persons.txt file and creates an array list
*
*/
public static ArrayList<Person> populate(ArrayList<Person> list)
throws IOException
{
// Scan in the file
File people = new File(PERSON_FILE);
Scanner ppl = new Scanner(people);
// While we have a next line, create a new Person and add it to the list
while (ppl.hasNextLine())
{
String name = ppl.next();
int month = ppl.nextInt();
int day = ppl.nextInt();
int year = ppl.nextInt();
list.add(new Person(name, month, day, year));
}
ppl.close();
return list;
}
/**
*
* Sorts an ArrayList based on the insertion sort algorithm. Modified code based
* on insertion sort from Sort.java in Lesson3SourceCode.
*
*/
// *** change double[] to ArrayList<Person>
public static void insertionSort (double[] list)
{
// Temporary variable for the next item to be inserted
// *** change double to Person
double valueToInsert;
int insertPos = 0;
// Iterate through the array taking each array element in turn
// as the next one to be inserted in its correct position.
// This element is placed in its correct position in the array of
// previously sorted elements contained in the lower array indices.
for (int i = 1; i < list.size(); i++)
{
// Hold the next element to be inserted,
// until we find the correct spot
valueToInsert = list.get(i);
insertPos = i;
// Find the correct place to insert this element
// in the lower array indices of already sorted elements
while ((insertPos > 0) && (list.get(insertPos - 1).compareTo(valueToInsert) > 0))
{
// Move elements up the array
// and insert position down
list.set(insertPos, list.get(insertPos - 1));
insertPos--;
}
// We are at the correct position, so insert the element
list.set(insertPos, valueToInsert);
}
}
/**
*
* Sorts an ArrayList based on the selection sort algorithm. Modified code based
* on selection sort from Sort.java in Lesson3SourceCode.
*
*/
// *** change double[] to ArrayList<Person>
public static void selectionSort (double[] list)
{
for (int i = 0; i < list.size(); i++)
{
// Find the minimum in the ArrayList through [i..list.length-1]
// *** change double to Person
double currentMin = list[i];
int currentMinIndex = i;
for (int j = i + 1; j < myList.size(); j++)
{
if (currentMin.compareTo(list.get(j)) > 0)
{
currentMin = list.get(j);
currentMinIndex = j;
}
}
// Swap myList at i with myList at currentMinIndex if necessary;
if (currentMinIndex != i)
{
list.set(currentMinIndex, list.get(i));
list.set(i, currentMin);
}
}
}
}
Solution
Hi, Please find my fixed code:
################
public class PersonSort
{
// Test file. Format is \"STRING int int int\"
static final String PERSON_FILE = \".\\\\src\\\\Persons.txt\";
public static void main(String[] args) throws FileNotFoundException
{
// Create new ArrayList<Person> and populate from test file
ArrayList<Person> list1 = new ArrayList<Person>();
populate(list1);
// Create new array with same people
ArrayList<Person> list2 = new ArrayList<Person>(list1);
insertionSort(list1);
// Print result of sort
System.out.println(\"INSERTION SORT\");
for(Person p : list1)
{
System.out.println(p.toString());
}
selectionSort(list2);
System.out.println();
System.out.println(\"SELECTION SORT\");
for(Person p : list2)
{
System.out.println(p.toString());
}
}
/*
* populate - this method reads the Persons.txt file and creates an array list
*
*/
public static ArrayList<Person> populate(ArrayList<Person> list)
throws IOException
{
// Scan in the file
File people = new File(PERSON_FILE);
Scanner ppl = new Scanner(people);
// While we have a next line, create a new Person and add it to the list
while (ppl.hasNextLine())
{
String name = ppl.next();
int month = ppl.nextInt();
int day = ppl.nextInt();
int year = ppl.nextInt();
list.add(new Person(name, month, day, year));
}
ppl.close();
return list;
}
##########################
public static void insertionSort (ArrayList<Person> list)
{
// Temporary variable for the next item to be inserted
Person valueToInsert;
int insertPos = 0;
// Iterate through the array taking each array element in turn
// as the next one to be inserted in its correct position.
// This element is placed in its correct position in the array of
// previously sorted elements contained in the lower array indices.
for (int i = 1; i < list.size(); i++)
{
// Hold the next element to be inserted,
// until we find the correct spot
valueToInsert = list.get(i);
insertPos = i;
// Find the correct place to insert this element
// in the lower array indices of already sorted elements
while ((insertPos > 0) && (list.get(insertPos - 1).compareTo(valueToInsert) > 0))
{
// Move elements up the array
// and insert position down
list.set(insertPos, list.get(insertPos - 1));
insertPos--;
}
// We are at the correct position, so insert the element
list.set(insertPos, valueToInsert);
}
}
#####################
public static void selectionSort (ArrayList<Person> list)
{
for (int i = 0; i < list.size(); i++)
{
// Find the minimum in the ArrayList through [i..list.length-1]
Person currentMin = list[i];
int currentMinIndex = i;
for (int j = i + 1; j < list.size(); j++)
{
if (currentMin.compareTo(list.get(j)) > 0)
{
currentMin = list.get(j);
currentMinIndex = j;
}
}
// Swap list at i with list at currentMinIndex if necessary;
if (currentMinIndex != i)
{
list.set(currentMinIndex, list.get(i));
list.set(i, currentMin);
}
}
}
}




