A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás listával dolgozik. Foreach ciklusokat is használok benne, és tettem egy statikus metódust az adattároló osztályba.
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_10okt_anagram_v2; public class Szo { private String szo; private String abc; public Szo(String szo) { this.szo = szo; abc = rendezett(szo); } public String getAbc() { return abc; } public String getSzo() { return szo; } @Override public String toString() { return "Szo{" + "szo=" + szo + ", abc=" + abc + '}'; } // egy tetszoleges szo betuinek abc rendezese public static String rendezett( String szo ) { char[] tomb = szo.toCharArray(); for( int i = 0; i < tomb.length - 1; i++ ) { for( int j = i + 1; j < tomb.length; j++ ) { if(tomb[i] > tomb[j]) { char csere = tomb[i]; tomb[i] = tomb[j]; tomb[j] = csere; } } } return new String(tomb); } }
A feladat megoldásai:
/** * * @author https://webotlet.hu */ package webotlet_10okt_anagram_v2; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Scanner; public class Webotlet_10okt_anagram_v2 { public static void main(String[] args) { System.out.println("1. feladat"); System.out.println("Adja meg a szoveget:"); Scanner sc = new Scanner(System.in); String szo = sc.nextLine(); char[] betuk = szo.toCharArray(); int[] betukDb = new int[((int)'z') + 1]; for( int i = 0; i < betuk.length; i++) { betukDb[ (int)betuk[i] ]++; } for( int i = 0; i < betukDb.length; i++ ) { if(betukDb[i] > 0) { System.out.println(betukDb[i] + " " + (char)i); } } RandomAccessFile raf; String sor; ArrayList<Szo> szavak = new ArrayList<>(); try { raf = new RandomAccessFile("szotar.txt", "r"); 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()); // } try { RandomAccessFile ki = new RandomAccessFile("abc.txt", "rw"); ki.setLength(0); for( int i = 0; i < szavak.size(); i++ ) { ki.writeBytes(szavak.get(i).getAbc() + "\n"); } ki.close(); } catch(IOException e) { System.out.println("HIBA"); } System.out.println("4. feladat"); String szo1; String szo2; System.out.print("1. szo: "); szo1 = sc.nextLine(); System.out.print("2. szo: "); szo2 = sc.nextLine(); if( Szo.rendezett(szo1).equals(Szo.rendezett(szo2 )) ) { System.out.println("Anagramma"); } else { System.out.println("Nem anagramma"); } System.out.println("5. feladat Adj meg egy szot!"); Scanner sc2 = new Scanner(System.in); String feladat5 = sc2.nextLine(); feladat5 = Szo.rendezett(feladat5); for( int i = 0; i < szavak.size(); i++ ) { if( szavak.get(i).getAbc().equals(feladat5) ) { System.out.println(szavak.get(i).getSzo()); } } System.out.println("6. feladat"); int maxhossz = szavak.get(0).getSzo().length(); for( int i = 0; i < szavak.size(); i++ ) { if( szavak.get(i).getSzo().length() > maxhossz ) { maxhossz = szavak.get(i).getSzo().length(); } } ArrayList<Szo> leghosszabb = new ArrayList<>(); for( int i = 0; i < szavak.size(); i++ ) { if( szavak.get(i).getSzo().length() == maxhossz ) { leghosszabb.add(szavak.get(i)); } } for( int i = 0; i < leghosszabb.size() - 1; i++ ) { for( int j = i + 1; j < leghosszabb.size(); j++ ) { if( leghosszabb.get(i).getAbc().compareTo(leghosszabb.get(j).getAbc()) > 0) { Szo csere = leghosszabb.get(i); leghosszabb.set(i, leghosszabb.get(j)); leghosszabb.set(j, csere); } } } for( Szo sz : leghosszabb) { System.out.println(sz.getSzo()); } for( int i = 0; i < szavak.size() - 1; i++ ) { for( int j = i + 1; j < szavak.size(); j++ ) { if( szavak.get(i).getSzo().length() > szavak.get(j).getSzo().length() || (szavak.get(i).getSzo().length() == szavak.get(j).getSzo().length() && szavak.get(i).getAbc().compareTo(szavak.get(j).getAbc()) > 0 ) ) { Szo csere = szavak.get(i); szavak.set(i, szavak.get(j)); szavak.set(j, csere); } } } try { RandomAccessFile ki = new RandomAccessFile("rendezve.txt", "rw"); ki.setLength(0); ki.writeBytes(szavak.get(0).getSzo()); for( int i = 1; i < szavak.size(); i++ ) { if( szavak.get(i).getAbc().equals(szavak.get(i - 1).getAbc())) { ki.writeBytes(" " + szavak.get(i).getSzo()); } else if( szavak.get(i).getSzo().length() == szavak.get(i - 1).getSzo().length() ) { ki.writeBytes("\n" + szavak.get(i).getSzo()); } else { ki.writeBytes("\n\n" + szavak.get(i).getSzo()); } } ki.close(); } catch( IOException e ) { System.out.println(e.getMessage()); System.out.println("HIBA"); } } }
Ha hibát találsz benne, kérlek jelezd!