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!
