Windows käsurida
Igale arvutile on töötamiseks paigaldatud operatsioonisüsteem (näiteks MS...
char
Tekstiga töötamisel on väikseim ühik üksik märk ning selleks kasutatakse lihttüübilist muutujat char
. Täpsemalt üks märk Unicode kooditabelist ning väärtus tuleb lisada üksikute ( ‘ ) jutumärkide vahele.
1 2 3 4 5 6 7 | public class ylesanne4 { public static void main(String[] args) { char m2rk = 'G'; System.out.println(m2rk); } } |
Kuna Unicode baseerub ASCII‘l, saab sümboli kirja panna näiteks kümnendsüsteemi arvuna. Näiteks tähe A saamiseks tuleb kasutada arvu 65.
1 2 3 4 5 6 7 8 9 10 | public class ylesanne4 { public static void main(String[] args) { char m2rk = 'G'; char kood = 65; System.out.println(m2rk); System.out.println(kood); } } |
Ja kui on rohkem märke, siis saad hoida neid massiivis.
1 2 3 4 5 6 7 8 9 10 11 12 | public class ylesanne4 { public static void main(String[] args) { char m2rk = 'G'; char kood = 65; char[] m2rgid ={ 'a', 'b', 'c', 'd', 'e' }; System.out.println(m2rk); System.out.println(kood); System.out.println(m2rgid[4]); } } |
Ühe sümboli sees saab hoida ka erimärke. Näiteks saab seal hoida tabeldusmärki, uut rida jne. Sel juhul tuleb ette lisada vasakule langkriips (backslash \).
1 2 3 4 5 6 7 8 | public class ylesanne4 { public static void main(String[] args) { char uusRida = '\n'; System.out.println("See "+uusRida+"murrab!"); } } |
Special characters | Display |
\' | Single quotation mark |
\" | Double quotation mark |
\\ | Backslash |
\t | Tab |
\b | Backspace |
\r | Carriage return |
\f | Formfeed |
\n | Newline |
Siit tabelist on näha ka võimalust, kui soovid hoida väärtusena jutumärki. Ja täpselt samad erimärgid toimivad ka tavaliste sõnede puhul.
string
)?Tekste nimetatakse programmeerimises sõnedeks (string). See lubab ühte muutujasse topeltjutumärkide (“) vahele lisada rohkem sümboleid.
1 2 3 4 5 6 7 8 | public class ylesanne4 { public static void main(String[] args) { String sone = "Tere maailm!"; System.out.println(sone); } } |
Sõne võid vaadelda ka kui märkide massiivi, mille saaks kirja panna char[] m2rgid ={'T','e','r','e',' ','m','a','a','i','l','m','!' }; . Sõned on Javas objektid ning kuuluvad klassi java.lang.String.
Ja pane tähele, et tüübi määramine algab suure algustähega.
Kui sõnesid on vaja omavahel ühendada, siis kasutame ikka lihtsat pluss-märki (+). Erimärgid on täpselt nagu eespool juba kirjas. Näiteks on vaja kuvada meil topeltjutumärke, siis nende ette tuleb lisada langkriips.
1 2 3 4 5 6 7 8 | public class ylesanne4 { public static void main(String[] args) { String nimetus = "\"Reis ümber maailma\""; System.out.println("Lauamäng "+nimetus+"."); } } |
Et tekstiga edasi töötada, vaatame selles peatükis ka võimaluse, kuidas kasutajaga suhelda. Ehk kuidas saab kasutaja sisestada teksti või arve. Vaatame lihtsat näidet, kus kasutaja sisestab oma nime ja vanuse ning me reageerime sellele. Kasutajalt andmete saamiseks kasutame java.util.Scanner
klassi. Selle klassi kasutamiseks tuleb see eraldi sisse importida. Saadud kasutaja sisestus tuleb vastavasse muutujasse lisada ja selleks on meil kasutada erinevaid meetodeid.
Arvudest arusaamiseks kasutame meetoditena nextInt(), nextFloat(), nextDouble(), nextLong()
ja teksti mõistmiseks nextLine()
. Välja toodud meetodid loevad iga kasutaja sisestuse lõpuni.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import java.util.Scanner; public class ylesanne4 { public static void main(String[] args) { Scanner scanner = new Scanner (System.in); //kasutaja sisestus System.out.print("Sisesta oma nimi: "); String nimi = scanner.nextLine(); //lisab sisestuse sõne muutujasse System.out.print("Sisesta oma vanus: "); int vanus = scanner.nextInt(); //lisab sisestuse täisarvu muutujasse System.out.println("Tere "+nimi+", "+vanus+"!"); } } |
printf
)Hetkel oleme siiani kasutanud teksti ja muutujate ühendamiseks nö “pluss meetodit”. Enamus programmeerimiskeeli võimaldavad aga meil kasutada funktsiooni printf()
. See võimaldab meil kirjutada tekstimalli, kuhu sisse paigutame kohad, mis väljundis täidetakse soovitud andmetega. Pesade loomiseks kasutatakse protsendi märki (%) ja andmetüübi tähist. Näiteks “%s”.
Meetodi printf
kasutamisel tuleb tekst lisada kindlasti topelt jutumärkide (“) vahele ning teksti pesa loomiseks kasutame “%s” märgendit. Ja pärast koma, tuleb vastavalt igale pesale määrata sisu. Kõige parem ongi seda vaadata näite abil.
1 2 3 4 5 6 7 8 9 | public class ylesanne4 { public static void main(String[] args) { String nimi = "Mari"; System.out.printf("Meie %s on nii nooruslik!", nimi); //Väljund: Meie Mari on nii nooruslik! } } |
Pesasid võib olla mitu ning sisu võib tulla nii muutujast kui otse – lihtsalt eralda komaga.
1 2 3 4 5 6 7 8 9 | public class ylesanne4 { public static void main(String[] args) { String nimi = "Mari"; System.out.printf("Meie %s %s on nii nooruslik!", nimi, "Maasikas"); //Väljund: Meie Mari Maasikas on nii nooruslik! } } |
Täisarvude puhul, tuleb kasutada “%d” märgendit. Ning kindlasti saab ühe lauses erinevaid märgendeid korraga kasutada. Aga järjekord peab säiluma.
1 2 3 4 5 6 7 8 9 10 11 | public class ylesanne4 { public static void main(String[] args) { int arv1 = 6; int arv2 = 7; String yhik = "tk"; System.out.printf("%d + %d = %d%s", arv1, arv2, arv1+arv2, yhik); //Väljund: 6 + 7 = 13tk } } |
Aeg-ajalt on soov väljundit vormindada. Näiteks loetavateks veergudeks. Sel juhul saad määrata pesa laiuse. Näiteks “%20s”, mille puhul eraldatakse tekstile 20 kohta. Kui tekst on pikem, kui sa määrasid, siis kuvatakse ikka kõik.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class ylesanne4 { public static void main(String[] args) { String[] nimed = {"Eesti keel", "Matemaatika", "Kirjandus"}; int[] vanused = {4, 5, 3}; for (int i = 0; i < vanused.length; i++) { System.out.printf("%20s %d",nimed[i], vanused[i]); } } } //Väljund: // Eesti keel 4 Matemaatika 5 Kirjandus 3 |
Nagu näha, siis eraldati tekstile kenasti 20 kohta. Aga kõik tuli ühe reana ja tekst joondatakse pesas paremale. Meetod printf
pakub võimalust ka reamurdmist “%n” (sama mis “\n”) ning teksti joondamiseks paremale, tuleb kasutada miinuse märki (-).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class ylesanne4 { public static void main(String[] args) { String[] nimed = {"Eesti keel", "Matemaatika", "Kirjandus"}; int[] vanused = {4, 5, 3}; for (int i = 0; i < vanused.length; i++) { System.out.printf("%-20s %d%n",nimed[i], vanused[i]); } } } //Väljund: /* Eesti keel 4 Matemaatika 5 Kirjandus 3 */ |
Ujukomaarvudele pesa tegemiseks kasutatakse “%f” märgendit.
1 2 3 4 5 6 7 | public class ylesanne4 { public static void main(String[] args) { System.out.printf("%f",123.456); //Väljund: 123.456000 } } |
Vaikimisi antakse ujukomaarvudele 10 kohta kokku (k.a. komakoht) ja seepärast kui sinu arv on väiksem, siis lisatakse sinna nullid. Sarnaselt eelmistele vormindamistele, on võimalik määrata ka siin kohtade arvu. Määrata saab kogu kohtade arvu või murdosa. Või mõlemat korraga. Lühema murdosa määramisel toimub aga ümardamine.
1 2 3 4 5 6 7 8 9 | public class ylesanne4 { public static void main(String[] args) { System.out.printf("%.2f",123.456); //Väljund: 123.46 System.out.printf("%15f",123.456); //Väljund: 123.456000 System.out.printf("%15.2f",123.456); //Väljund: 123.46 } } |
Sõnede klassiga tuleb töötluseks kaasa hunnik meetodeid. Vaatame esialgu mõningaid:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class ylesanne4 { public static void main(String[] args) { String tekst = "Lorem iPsum"; System.out.println(tekst.length()); //11 System.out.println(tekst.charAt(0)); //L System.out.println(tekst.substring(1)); //orem iPsum System.out.println(tekst.substring(2,5)); //rem System.out.println(tekst.indexOf("m")); //4 System.out.println(tekst.indexOf("m",5)); //10 System.out.println(tekst.toLowerCase()); //lorem ipsum System.out.println(tekst.toUpperCase()); //LOREM IPSUM String[] tykeldus = tekst.split(" "); System.out.println(tykeldus[0]); //Lorem } } |
Sokutan siia lõppu ka arvude teisendamise. Et kui näiteks kasutaja on sisestanud isikukoodi, mis alguses on sõnena. Aga et isikukoodiga opereerida, on vaja see arvuks teisendada.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class ylesanne5 { public static void main(String[] args) { String ik = "50801100182"; int esimeneNr = Integer.parseInt(ik.substring(0,1)); //teisendame täisarvuks String esimeneT2ht = Integer.toString(esimeneNr); //teisendame sõneks System.out.println(esimeneNr); System.out.println(esimeneT2ht); float ujukoma = Float.parseFloat("25"); String sone = Float.toString(25.0f); System.out.println(ujukoma); System.out.println(sone); } } |
Ja nagu näitest näha, siis ujukomaarvudega tuleb sarnaselt käituda.