Gyakorlati alapok
Rajzolgassunk!
Átlós szöveg
Most pedig alkossunk egy olyan algoritmust, amelyik ferdén ír ki egy, a felhasználó által megadott szót vagy tetszőleges karakterfüzért. Rengetegféle implementálás lehetséges, én egy állandó méretű, String típusú szóköztömbből indultam ki...
String szokozTomb [] = new String[10];
szokozTomb[0] = "\n";
szokozTomb[1] = "\n ";
szokozTomb[2] = "\n ";
szokozTomb[3] = "\n ";
szokozTomb[4] = "\n ";
szokozTomb[5] = "\n ";
szokozTomb[6] = "\n ";
szokozTomb[7] = "\n ";
szokozTomb[8] = "\n
";
szokozTomb[9] = "\n
";
...amely egyre növekvő, majd csökkenő mértékben a bekért szóból a substring() függvény által kiemelt karakterek elé van illesztve. Mivel szokozTomb mérete véges (10), fontos szempont, hogy ne kerüljön a rendszerbe nagyobb (több karaktert tartalmazó) szó, mert léptetés esetén tömbhatárátlépés fog keletkezni. Ezt a problémát úgy oldjuk meg, hogy a szó bekérésekor ellenőrizzük a szó hosszát (szoveghossz = szoveg.length();) és egy hátultesztelő ciklus használatával nem engedünk meg 9 karakternél hosszabb szót (while(szoveghossz > 9);). Erre természetesen a felhasználót is figyelmeztetjük (System.out.println("Kérem, hogy adja meg a szót (max. 9 karakter)!");).
Az átlós szövegkiírást további 2 hátultesztelő ciklus végzi el, de for ciklusokkal is megoldható.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String szokozTomb [] = new String[10];
szokozTomb[0] = "\n";
szokozTomb[1] = "\n ";
szokozTomb[2] = "\n ";
szokozTomb[3] = "\n ";
szokozTomb[4] = "\n
";
szokozTomb[5] = "\n
";
szokozTomb[6] = "\n
";
szokozTomb[7] = "\n
";
szokozTomb[8] = "\n
";
szokozTomb[9] = "\n
";
Scanner in = new Scanner(System.in);
String szoveg = "";
int szoveghossz = 0;
do{
System.out.println("Kérem, hogy adja
meg a szót (max. 9 karakter)!");
szoveg = in.nextLine();
szoveghossz = szoveg.length();
}while(szoveghossz > 9);
int n = 0;
do {
System.out.print(szoveg.substring(n,
n+1));
System.out.print(szokozTomb[n+1]);
n++;
}while (n != szoveghossz);
n = 0;
int tarolo = szoveg.length();
do {
System.out.print(szokozTomb[tarolo -
1]);
System.out.print(szoveg.substring(n,
n+1));
n++;
tarolo--;
} while (n != szoveg.length());
}
}
Végeredmény (például):
Kérem, hogy adja meg a szót!
Átlós szöveg
Kérem, hogy adja meg a szót!
Átlósan
Á
t
l
ó
s
a
n
Á
t
l
ó
s
a
n