A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás listával, és ahol lehet, foreach ciklusokkal dolgozik. Az adattároló osztályban néhány feladatot előkészítek, és a végső megoldásban ezeket használom. Ide pakoltam a betű – kód átalakítást. Az utolsó két feladathoz TreeMap-et használok. Azért Tree-t, hogy egyúttal rendezett is legyen az eredmény (ami egyébként nem követelmény).
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_07maj_sms_szavak_java_v3; public class Szo { private String szo; private String szamkod; public Szo( String szo ) { this .szo = szo; StringBuilder sb = new StringBuilder(); char [] tomb = szo.toCharArray(); for ( char c : tomb ) { sb.append(betukod(c)); } szamkod = sb.toString(); } public String getSzo() { return szo; } public String getSzamkod() { return szamkod; } public void setSzamkod(String szamkod) { this .szamkod = szamkod; } @Override public String toString() { return "Szo{" + "szo=" + szo + ", szamkod=" + szamkod + '}' ; } public String SzoKod() { return szo + " : " + szamkod + "; " ; } public static int betukod( char betu ) { int kod = 0 ; switch ( betu ) { case 'a' : case 'b' : case 'c' : kod = 2 ; break ; case 'd' : case 'e' : case 'f' : kod = 3 ; break ; case 'g' : case 'h' : case 'i' : kod = 4 ; break ; case 'j' : case 'k' : case 'l' : kod = 5 ; break ; case 'm' : case 'n' : case 'o' : kod = 6 ; break ; case 'p' : case 'q' : case 'r' : case 's' : kod = 7 ; break ; case 't' : case 'u' : case 'v' : kod = 8 ; break ; default : kod = 9 ; break ; } return kod; } } |
A feladat megoldásai:
/** * * @author https://webotlet.hu */ package webotlet_07maj_sms_szavak_java_v3; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; public class Webotlet_07maj_sms_szavak_java_v3 { public static void main(String[] args) { // 1. feladat System.out.println( "1. feladat" ); Scanner sc = new Scanner(System.in); System.out.println( "Adj meg egy betut!" ); char c = sc.nextLine().charAt( 0 ); System.out.println(Szo.betukod(c)); // 2. feladat System.out.println( "2. feladat" ); System.out.println( "Adj meg egy szot!" ); String sz = sc.nextLine(); for ( int i = 0 ; i < sz.length(); i++ ) { System.out.print(Szo.betukod(sz.charAt(i))); } System.out.println(); // 3. feladat ArrayList<Szo>szavak = new ArrayList<>(); try { RandomAccessFile raf = new RandomAccessFile( "szavak.txt" , "r" ); String sor; for ( sor = raf.readLine(); sor != null ; sor = raf.readLine() ) { szavak.add( new Szo(sor)); } raf.close(); } catch ( IOException e ) { System.out.println( "HIBA" ); } // for( int i = 0; i < szavak.length; i++ ) // { // System.out.println(szavak[i].toString()); // } // // 4. feladat System.out.println( "4. feladat" ); Szo max = szavak.get( 0 ); for (Szo szo : szavak) { if ( szo.getSzo().length() > max.getSzo().length() ) { max = szo; } } System.out.println( "A leghosszabb szo: " +max.getSzo() + ", hossza:" + max.getSzo().length()); // 5. feladat System.out.println( "5. feladat" ); int db5 = 0 ; for ( Szo szo : szavak ) { if ( szo.getSzo().length() <= 5 ) { db5++; } } System.out.println( "A fajlban " + db5 + " darab rovid szo van." ); // 6. feladat try { RandomAccessFile ki = new RandomAccessFile( "kodok.txt" , "rw" ); ki.setLength( 0 ); for ( Szo szo : szavak ) { ki.writeBytes(szo.getSzamkod() + "\n" ); } ki.close(); } catch ( IOException e ) { System.out.println( "HIBA" ); } // 7. feladat System.out.println( "7. feladat" ); sc = new Scanner(System.in); System.out.println( "Adj meg egy szamkodot!" ); String szamsor = sc.nextLine(); for ( Szo szo : szavak ) { if ( szo.getSzamkod().equals(szamsor) ) { System.out.println(szo.getSzo()); } } // 8. feladat System.out.println( "8. feladat" ); TreeMap<String,ArrayList<Szo>> kodDb = new TreeMap<>(); String szamkod = "" ; for ( Szo szo : szavak ) { szamkod = szo.getSzamkod(); if ( kodDb.containsKey(szamkod) ) { kodDb.get(szamkod).add(szo); } else { kodDb.put(szamkod, new ArrayList<>(Arrays.asList(szo))); } } for ( ArrayList<Szo> lista : kodDb.values() ) { if ( lista.size() > 1 ) { for ( Szo szo : lista ) { System.out.print(szo.SzoKod()); } } } System.out.println(); // 9. feladat System.out.println( "9. feladat" ); int maxDb = 0 ; ArrayList<Szo> maxKod = new ArrayList<>(); for ( ArrayList<Szo> elem : kodDb.values() ) { if ( elem.size() > maxDb ) { maxDb = elem.size(); maxKod = elem; } } System.out.print(maxKod.get( 0 ).getSzamkod() + ": " ); for (Szo szo : maxKod) { System.out.print(szo.getSzo() + " " ); } System.out.println(); } } |
Ha hibát találsz benne, kérlek jelezd!