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. Ez már kicsit elegánsabb, és még nem túl sok trükköt alkalmazó megoldás.
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_07maj_sms_szavak_java_v2; public class Szo { private String szo; private String szamkod; public Szo( String szo ) { this.szo = szo; } 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 + "; "; } }
A feladat megoldásai:
/** * * @author https://webotlet.hu */ package webotlet_07maj_sms_szavak_java_v2; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Scanner; public class Webotlet_07maj_sms_szavak_java_v2 { 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(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(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 for( Szo szo : szavak ) { String szamkod = ""; char[] tomb = szo.getSzo().toCharArray(); for( int j = 0; j < tomb.length; j++ ) { szamkod = szamkod.concat(String.valueOf(betukod(tomb[j]))); } szo.setSzamkod(szamkod); } 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"); for( int i = 0; i < szavak.size() - 1; i++ ) { for( int j = i + 1; j < szavak.size(); j++ ) { if( szavak.get(i).getSzamkod().compareTo(szavak.get(j).getSzamkod()) > 0 ) { Szo csere = szavak.get(i); szavak.set(i, szavak.get(j)); szavak.set(j, csere); } } } if( szavak.get(0).getSzamkod().equals(szavak.get(1).getSzamkod())) { System.out.print(szavak.get(0).SzoKod()); } for( int i = 1; i < szavak.size() - 1; i++ ) { if( szavak.get(i).getSzamkod().equals(szavak.get(i + 1).getSzamkod())) { System.out.print(szavak.get(i).SzoKod()); } else if( szavak.get(i).getSzamkod().equals(szavak.get(i - 1).getSzamkod())) { System.out.print(szavak.get(i).SzoKod()); } } int utolso = szavak.size() - 1; if( szavak.get(utolso).getSzamkod().equals(szavak.get(utolso - 1).getSzamkod())) { System.out.print(szavak.get(utolso).SzoKod()); } System.out.println(); // 9. feladat System.out.println("9. feladat"); String mibol = szavak.get(0).getSzamkod(); int db = 0; int maxDb = 1; for (int i = 0; i < szavak.size() - 1; i++) { if( szavak.get(i).getSzamkod().equals(szavak.get(i + 1).getSzamkod())) { db++; if( db > maxDb ) { maxDb = db; mibol = szavak.get(i).getSzamkod(); } } else { db = 1; } } System.out.print(mibol + ": "); for (int i = 0; i < szavak.size(); i++) { if( szavak.get(i).getSzamkod().equals(mibol)) { System.out.print(szavak.get(i).getSzo() + " "); } } System.out.println(); } public static int betukod( char betu ) { int kod = 0; if( betu == 'a' || betu == 'b' || betu == 'c' ) { kod = 2; } else if( betu == 'd' || betu == 'e' || betu == 'f' ) { kod = 3; } else if( betu == 'g' || betu == 'h' || betu == 'i' ) { kod = 4; } else if( betu == 'j' || betu == 'k' || betu == 'l' ) { kod = 5; } else if( betu == 'm' || betu == 'n' || betu == 'o' ) { kod = 6; } else if( betu == 'p' || betu == 'q' || betu == 'r' || betu == 's' ) { kod = 7; } else if( betu == 't' || betu == 'u' || betu == 'v' ) { kod = 8; } else { kod = 9; } return kod; } }
Ha hibát találsz benne, kérlek jelezd!