Назад | Начало урока | Вперед
Содержание

Глава 6

Задача 6.3 "Кто в какой группе?"

Модернизируйте программу 4.8 ( в которой определялся средний возраст) так, чтобы в объект вводились такие значения как имена детей, их возраст и название группы (буквы от А до Г), а сами объекты хранились в массиве. Отсортируйте элементы массива по значениям возраста и задайте вывод информации о детях. Сможете ли вы отсортировать элементы массива по именам и по обозначениям групп?

Решение 2

Напишем программу, которая сортирует по имени ребенка.

Эта программа будет отличаться от предыдущей только функцией сортировки, а если точнее то одной инструкцией в функции сортировки. Мы будем сравнивать два элемента Child не по возрасту, а по строке имени.

if (a[j].name.compareTo(a[chosen].name) < 0)

В результате большой массив объектов Child будет отсортирован по именам. Если нам понадобится отсортировать массив по названию групп, то надо в функции сортировки заменить предыдущую инструкцию на следующую:

if (a[j].groupName.compareTo(a[chosen].groupName) < 0)

В данной программе массив отсортирован по именам детей.

Код программы:


import java.io.*;
import javagently.*;

class AverangeAge {

void selectionSort2 (Child[] a, int n) {
Child temp;
int chosen;
for (int leftmost = 0; leftmost < n-1; leftmost++) {
chosen = leftmost;
for (int j = leftmost+1; j < n; j++)
if (a[j].name.compareTo(a[chosen].name) < 0)
chosen = j;
temp = a[chosen];
a[chosen] = a[leftmost];
a[leftmost] = temp;
}
}
AverangeAge() throws IOException {
Stream in = new Stream(System.in);
// default the file to the keyboard
Stream fin = new Stream(System.in);
try {
fin = Filer.open("data.txt");
}
catch (FileNotFoundException e) {
System.out.println("Five tries up");
System.out.println("Connecting to keyboard by default");
}

System.out.println();
System.out.println(" AverangeAge ");
System.out.println("============================");

int m = 6;
Child ch[] = new Child[m];
Child ch1[] = new Child[m*4];

int test = 0; // ball of testing

long AverangeAgeGroup = 0;
long AverangeAgeTotal = 0;
int sumAgeChild = 0;

try {

int z = 0;
for (int i=0;i < 4;i++) {
String nameGroup = fin.readLine();
System.out.println(" ");
System.out.println("Groupe name - " + nameGroup);
sumAgeChild = 0;
for (int j=0;j < 6;j++) {
String nameChild = fin.readLine();
int ageChild = (int) Double.valueOf(fin.readLine()).doubleValue();

sumAgeChild = sumAgeChild + ageChild;
ch[j] = new Child(nameGroup,nameChild,ageChild);
ch1[z] = new Child(nameGroup,nameChild,ageChild);
// Report
ch[j].write();
//ch1[z].write();
z++;

}//end for
AverangeAgeGroup = Math.round(sumAgeChild/6);
AverangeAgeTotal = AverangeAgeTotal + AverangeAgeGroup;
System.out.println("AverangeAgeGroup - " + AverangeAgeGroup);


}//end for
}
catch (EOFException e) {
System.out.println(" All data is reading ");
}
selectionSort2(ch1,24);

System.out.println(" " );
System.out.println(" Sorting groupe name" );
for (int j=0;j < 24;j++) {

ch1[j].write();
}


System.out.println("AverangeAgeTotal: " + Math.round(AverangeAgeTotal/4) );
}// AverangeAge construct

public static void main (String[] args) throws IOException {

new AverangeAge();
}
}// AverangeAge

class Child {

String groupName;
String name;
int age;
Child(String g, String n, int a ){
groupName = g;
name = n;
age = a;
}
void write () {
System.out.println(groupName + " " + name + " " + age+ " age ");
}
}


Результат :

AverangeAge
============================

Groupe name - Corn-flower
Corn-flower Poul McCartny 11 age
Corn-flower Jhon Lennon 9 age
Corn-flower Ringo Starkey 7 age
Corn-flower Gorge Harrison 10 age
Corn-flower Jhon Kennedy 9 age
Corn-flower Mike Jagger 8 age
AverangeAgeGroup - 9

Groupe name - Daisy
Daisy Poul Brown 7 age
Daisy Richard Stock 8 age
Daisy Wiliam Shekspear 9 age
Daisy Ernest Hemingway 10 age
Daisy Lewis Carrol 11 age
Daisy Mark Twen 7 age
AverangeAgeGroup - 8

Groupe name - Swallow
Swallow Edward Green 9 age
Swallow Wolfgang Mozart 10 age
Swallow Ludwig Beethoven 11 age
Swallow Ferenz List 7 age
Swallow Franz Bakkenbauer 7 age
Swallow Tomas Moor 9 age
AverangeAgeGroup - 8

Groupe name - Sky-lark
Sky-lark David Backham 11 age
Sky-lark Peter Resenfeld 9 age
Sky-lark Gorge Washington 10 age
Sky-lark Peter O-Tool 8 age
Sky-lark James Bond 9 age
Sky-lark Judy Bishoop 11 age
AverangeAgeGroup - 9

Sorting name
Sky-lark David Backham 11 age
Swallow Edward Green 9 age
Daisy Ernest Hemingway 10 age
Swallow Ferenz List 7 age
Swallow Franz Bakkenbauer 7 age
Corn-flower Gorge Harrison 10 age
Sky-lark Gorge Washington 10 age
Sky-lark James Bond 9 age
Corn-flower Jhon Kennedy 9 age
Corn-flower Jhon Lennon 9 age
Sky-lark Judy Bishoop 11 age
Daisy Lewis Carrol 11 age
Swallow Ludwig Beethoven 11 age
Daisy Mark Twen 7 age
Corn-flower Mike Jagger 8 age
Sky-lark Peter O-Tool 8 age
Sky-lark Peter Resenfeld 9 age
Daisy Poul Brown 7 age
Corn-flower Poul McCartny 11 age
Daisy Richard Stock 8 age
Corn-flower Ringo Starkey 7 age
Swallow Tomas Moor 9 age
Daisy Wiliam Shekspear 9 age
Swallow Wolfgang Mozart 10 age
AverangeAgeTotal: 8


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz