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; } }