A feladat aminek a megoldását itt közzéteszem, itt található. A feladatot csak forráskódként teszem közzé. Az utolsó feladat megoldását később teszem hozzá.
/**
*
* @author https://webotlet.hu
*/
package webotlet_fajlkezeles04;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Webotlet_Fajlkezeles04
{
public static void main(String[] args)
{
RandomAccessFile raf;
String sor;
String[] nevek = null;
try
{
raf = new RandomAccessFile("nevek.txt", "r");
int db = 0;
for (sor = raf.readLine(); sor != null; sor = raf.readLine())
{
db++;
}
nevek = new String[db];
raf.seek(0);
int hely = 0;
for (sor = raf.readLine(); sor != null; sor = raf.readLine())
{
nevek[hely] = sor;
hely++;
}
}
catch(IOException e)
{
System.out.println("HIBA");
}
// for (int i = 0; i < nevek.length; i++)
// {
// System.out.println(nevek[i]);
// }
// System.out.println();
System.out.println("1. feladat");
// Kinek van a leghosszabb vezetékneve?
String[] vezeteknevek;
vezeteknevek = new String[nevek.length];
for (int i = 0; i < vezeteknevek.length; i++)
{
vezeteknevek[i] = nevek[i].split(" ")[0];
}
// for (int i = 0; i < vezeteknevek.length; i++)
// {
// System.out.println(vezeteknevek[i]);
// }
int max = 0;
for (int i = 1; i < vezeteknevek.length; i++)
{
if (vezeteknevek[i].length() > vezeteknevek[max].length())
{
max = i;
}
}
System.out.println("A leghosszabb vezetekneve: "+nevek[max]);
System.out.println("2. feladat");
// Kinek van két keresztneve?
for( int i = 0;i < nevek.length; i++ )
{
if( nevek[i].split(" ").length > 2 )
{
System.out.println(nevek[i]);
}
}
System.out.println("3. feladat");
// Hányadik a leghosszabb név a fájlban?
int maxHosszHely = 0;
for( int i = 1; i < nevek.length; i++ )
{
if( nevek[i].length() > nevek[maxHosszHely].length() )
{
maxHosszHely = i;
}
}
System.out.println("A leghosszabb nev sorszama: "+(maxHosszHely+1));
System.out.println("4. feladat");
// Melyik névben van a legtöbb n betű?
// 1. verzió (helyben megszámolva, darabszámok többe rakva)
int[] nBetukDb = new int[nevek.length];
for( int i = 0; i < nevek.length; i++ )
{
String nev = nevek[i].toLowerCase();
int db = 0;
for (int j = 0; j < nev.length(); j++)
{
if (nev.charAt(j) == 'n')
{
db++;
}
}
nBetukDb[i] = db;
}
int maxN = 0;
for( int i = 1; i < nBetukDb.length; i++ )
{
if( nBetukDb[i] > nBetukDb[maxN] )
{
maxN = i;
}
}
System.out.println("A legtobb n betu ebben a nevben van: "+
nevek[maxN]);
// 2. verzió (metódussal)
int max2 = 0;
for (int i = 1; i < nevek.length; i++)
{
if (nBetuk(nevek[i]) > nBetuk(nevek[max2]))
{
max2 = i;
}
}
System.out.println("A legtobb n betu ebben a nevben van: "+
nevek[max2]);
// 3. verzió (split finomságokkal)
int max3 = 0;
for( int i = 1; i < nevek.length; i++ )
{
if( nevek[i].split("n|N",-1).length-1 >
nevek[max3].split("n|N",-1).length-1)
{
max3 = i;
}
}
System.out.println("A legtobb n betu ebben a nevben van: "+
nevek[max3]);
System.out.println("5. feladat");
// Vannak-e azonos vezetéknevű emberek?
// mindet mindegyikkel osszehasonlithatjuk
boolean azonosVezetek = false;
for (int i = 0; i < vezeteknevek.length-1; i++)
{
for (int j = i+1; j < vezeteknevek.length; j++)
{
if( vezeteknevek[i].equals(vezeteknevek[j]))
{
azonosVezetek = true;
break;
}
}
}
if( azonosVezetek )
{
System.out.println("Vannak azonos vezeteknevu "
+ "emberek.");
}
else
{
System.out.println("Nincsenek azonos vezeteknevu "
+ "emberek.");
}
System.out.println("6. feladat");
// Vannak-e azonos keresztnevű emberek?
// (minden keresztnévnek egyeznie kell)
String[] keresztnevek = new String[nevek.length];
for( int i = 0; i < nevek.length; i++ )
{
keresztnevek[i] = nevek[i].split(" ",2)[1];
}
// mindet mindegyikkel osszehasonlithatjuk
boolean azonosKereszt = false;
for (int i = 0; i < keresztnevek.length-1; i++)
{
for (int j = i+1; j < keresztnevek.length; j++)
{
if( keresztnevek[i].equals(keresztnevek[j]))
{
azonosKereszt = true;
break;
}
}
}
if( azonosKereszt )
{
System.out.println("Vannak teljesen azonos "
+ "keresztnevu emberek.");
}
else
{
System.out.println("Nincsenek teljesenazonos "
+ "keresztnevu emberek.");
}
// 7. feladat megoldása később
}
public static int nBetuk(String nev)
{
// hogy az n és N betűket ne különböztessük meg
nev = nev.toLowerCase();
int db = 0;
for (int i = 0; i < nev.length(); i++)
{
if (nev.charAt(i) == 'n')
{
db++;
}
}
return db;
}
}
