A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás tömbbel dolgozik. Az adattároló osztályban egy új tulajdonságot is felveszek. Ez a feladat szerintem túl könnyű volt 🙂
Adattároló osztály:
/**
*
* @author https://webotlet.hu
*/
package webotlet_19majma_tantargyfelosztas;
public class Adat
{
private String tanar;
private String tantargy;
private String osztaly;
private int db;
private boolean osztalyfonok;
public Adat(String sor1, String sor2, String sor3, String sor4)
{
tanar = sor1;
tantargy = sor2;
osztaly = sor3;
db = Integer.parseInt(sor4);
if( tantargy.equals("osztalyfonoki"))
{
osztalyfonok = true;
}
}
public String getTanar()
{
return tanar;
}
public String getTantargy()
{
return tantargy;
}
public String getOsztaly()
{
return osztaly;
}
public int getDb()
{
return db;
}
public boolean isOsztalyfonok()
{
return osztalyfonok;
}
@Override
public String toString()
{
return "Adat{" + "tanar=" + tanar + ", tantargy="
+ tantargy + ", osztaly=" + osztaly + ", db="
+ db + ", osztalyfonok=" + osztalyfonok + '}';
}
}
A feladat megoldásai:
/**
*
* @author https://webotlet.hu
*/
package webotlet_19majma_tantargyfelosztas;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;
public class Webotlet_19majma_tantargyfelosztas
{
public static void main(String[] args)
{
Adat[] adatok = null;
try
{
RandomAccessFile raf = new RandomAccessFile("beosztas.txt", "r");
String sor;
int db = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
db++;
}
adatok = new Adat[db / 4];
raf.seek(0);
int hely = 0;
for( sor = raf.readLine(); sor != null; sor = raf.readLine() )
{
adatok[hely] = new Adat(sor, raf.readLine(),
raf.readLine(), raf.readLine());
hely++;
}
raf.close();
}
catch( IOException e )
{
System.out.println("HIBA");
}
// for( int i = 0; i < adatok.length; i++ )
// {
// System.out.println(adatok[i].toString());
// }
System.out.println("2. feladat");
System.out.println("A fajlban " + adatok.length
+ " bejegyzes van.");
System.out.println("3. feladat");
int orak = 0;
for( int i = 0; i < adatok.length; i++ )
{
orak += adatok[i].getDb();
}
System.out.println("Az iskolaban a heti osszoraszam: " + orak);
System.out.println("4. feladat");
Scanner sc = new Scanner(System.in);
System.out.print("Egy tanar neve= ");
String tanar = sc.nextLine();
int tanarOrak = 0;
for( int i = 0; i < adatok.length; i++ )
{
if( adatok[i].getTanar().equals(tanar) )
{
tanarOrak += adatok[i].getDb();
}
}
System.out.println("A tanar heti oraszama: " + tanarOrak);
try
{
RandomAccessFile ki = new RandomAccessFile("of.txt", "rw");
ki.setLength(0);
for( int i = 0; i < adatok.length; i++ )
{
if( adatok[i].isOsztalyfonok() )
{
ki.writeBytes(adatok[i].getOsztaly() + " - "
+ adatok[i].getTanar() + "\n");
}
}
}
catch( IOException e )
{
System.out.println("HIBA");
}
System.out.println("6. feladat");
System.out.print("Osztaly= ");
String osztaly = sc.nextLine();
System.out.print("Tantargy= ");
String tantargy = sc.nextLine();
int db = 0;
for( int i = 0; i < adatok.length; i++ )
{
if( adatok[i].getOsztaly().equals(osztaly)
&& adatok[i].getTantargy().equals(tantargy) )
{
db++;
}
}
if( db == 2 ) // feltetelezzuk, hogy nincs nagyobb bontas
{
System.out.println("Csoportbontasban tanuljak.");
}
else
{
System.out.println("Osztalyszinten tanuljak.");
}
System.out.println("7. feladat");
String[] tanarok = new String[adatok.length];
int hely = 0;
for( int i = 0; i < adatok.length; i++ )
{
boolean benne = false;
for( int j = 0; j < hely; j++ )
{
if( tanarok[j].equals(adatok[i].getTanar()) )
{
benne = true;
break;
}
}
if( !benne )
{
tanarok[hely] = adatok[i].getTanar();
hely++;
}
}
System.out.println("Az iskolaban " + hely + " tanar tanit.");
}
}
Ha hibát találsz benne, kérlek jelezd!
