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!
