Skandien käyttö harjoituksessa

Myypii

Hei!

Olen tekemässä pientä ohjelmaa joka taivuttaa sanoja jotka päätyy joko -aa tai -ää.

Nuo -aa päättyvät sanat olen etsinyt sana.endsWith-komenolla.

Mutta miten toimia skandien kanssa?

Olen yrittänyt komentoa sana.endsWith ("\u00E4\u00E4"), mutta tämä ei toimi?

Ohjelma ilmoittaa ettö end.With-komentoa ei voi käyttää.

7

429

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • .........

      String sana = "kjdkjdä";
      if(sana.endsWith("ä")){
         System.out.println("joo");
      }

    • ööööääääää

      Se toimii jos ä on koodattu koodilla: "\u00E4". Kokeile vaikka muotoa "\u201E\u201E" tai "\u0084\u0084", jos vaikka jompikumpi niistä toimisi. Se millä kirjaimellä ä on koodattu riippuu merkistöstä ja editorista. Laita koodisi tulostamaan kyseisen kirjaimen koodi näytölle, niin saat poimittua sen siitä. Esim. jos merkkijono nimeltä "jono" päättyy ä -kirjaimeen, niin voit tulostaa silloin kyseisen kirjaimen koodin näytölle seuraavasti:

      System.out.print((int) jono.charAt(jono.length()-1));

      • ööööääääää

        Jos haluat olla varma, että ohjelma toimii vaikka teksti on jollakin muulla koodauksella, niin silloin kannattaa laittaa eri vaihtoedot OR lauseella


        if (jono.endsWith("\u00E4\u00E4") || jono.endsWith("\u201E\u201E"))
        {   
        }

        On niitä varmaan muitakin kun nuo kaksi, riippuen mitä merkistöä käyttää. Nuo koodit sain Windows puolelta ja DOS puolelta. Esim. alla oleva ohjelma perus DOS editorilla tehtynä ja sen jälkeen käännettynä, tulostaa ruudulle 8222 (eli "\u201e"), kun taas Windows puoella tehtynä ja käännettynä tulostuu ruutuun 228 (eli "\u00E4")


        --- ALKAA ---

        public class Esimerkki {
           public static void main(String[] args) {
              System.out.println((int) "ä".charAt(0));
           }
        }

        --- LOPPUU ---


      • Myypii
        ööööääääää kirjoitti:

        Jos haluat olla varma, että ohjelma toimii vaikka teksti on jollakin muulla koodauksella, niin silloin kannattaa laittaa eri vaihtoedot OR lauseella


        if (jono.endsWith("\u00E4\u00E4") || jono.endsWith("\u201E\u201E"))
        {   
        }

        On niitä varmaan muitakin kun nuo kaksi, riippuen mitä merkistöä käyttää. Nuo koodit sain Windows puolelta ja DOS puolelta. Esim. alla oleva ohjelma perus DOS editorilla tehtynä ja sen jälkeen käännettynä, tulostaa ruudulle 8222 (eli "\u201e"), kun taas Windows puoella tehtynä ja käännettynä tulostuu ruutuun 228 (eli "\u00E4")


        --- ALKAA ---

        public class Esimerkki {
           public static void main(String[] args) {
              System.out.println((int) "ä".charAt(0));
           }
        }

        --- LOPPUU ---

        Hei!

        Kiitos antamasi juttu toimi, mutta nyt minulla on uusi ongelma samassa ohjelmassa.

        Yritin laittaa ohjelman alkuun sellaisen rajoitteen, että sanan täytyy olla vähintään neljä kirjainta pitkä, mutta koodissa on koko ajan ongelmia.

        import java.util.Scanner;
        import java.lang.String;


        public class taivutus1 {

        public static void main (String[] args)
           
           {
              //muuttujien määrittely
           
              String infinitiivi;
                             
              //otetaan scanner toiminto käyttöön
              Scanner lukija = new Scanner (System.in);
              
              //pyydetään käyttäjää syöttämään verbin infinitiivi
              System.out.println("Syota verbin infinitiivi:");
              infinitiivi = lukija.next();
              System.out.println("\n");
              
              int pituus;
              
              String temp = ""; // alustetaan tyhjällä merkkijonolla

              temp = lukija.nextLine(); // luetaan merkkijono
              pituus = temp.length(); // kysytään merkkijonon pituus

              while (pituus 3) & (infinitiivi.endsWith("aa") || infinitiivi.endsWith("ea") || infinitiivi.endsWith("ia") || infinitiivi.endsWith("oa") || infinitiivi.endsWith("ua") || infinitiivi.endsWith("\u00E4\u00E4") || infinitiivi.endsWith("\u201E\u201E")||infinitiivi.endsWith ("\u0079\u00E4") || infinitiivi.endsWith ("\u0079\u201E")||infinitiivi.endsWith ("\u0065\u00E4") || infinitiivi.endsWith ("\u0065\u201E") ||infinitiivi.endsWith ("\u0069\u00E4") || infinitiivi.endsWith ("\u0069\u201E"))
              
              {
              System.out.println("Verbi kuuluu 1. ryhmaan");
              }
              
              else
              {
              System.out.println("Verbi ei kuulu 1. ryhmaan");
              }               
        }

        }


      • jaavake
        Myypii kirjoitti:

        Hei!

        Kiitos antamasi juttu toimi, mutta nyt minulla on uusi ongelma samassa ohjelmassa.

        Yritin laittaa ohjelman alkuun sellaisen rajoitteen, että sanan täytyy olla vähintään neljä kirjainta pitkä, mutta koodissa on koko ajan ongelmia.

        import java.util.Scanner;
        import java.lang.String;


        public class taivutus1 {

        public static void main (String[] args)
           
           {
              //muuttujien määrittely
           
              String infinitiivi;
                             
              //otetaan scanner toiminto käyttöön
              Scanner lukija = new Scanner (System.in);
              
              //pyydetään käyttäjää syöttämään verbin infinitiivi
              System.out.println("Syota verbin infinitiivi:");
              infinitiivi = lukija.next();
              System.out.println("\n");
              
              int pituus;
              
              String temp = ""; // alustetaan tyhjällä merkkijonolla

              temp = lukija.nextLine(); // luetaan merkkijono
              pituus = temp.length(); // kysytään merkkijonon pituus

              while (pituus 3) & (infinitiivi.endsWith("aa") || infinitiivi.endsWith("ea") || infinitiivi.endsWith("ia") || infinitiivi.endsWith("oa") || infinitiivi.endsWith("ua") || infinitiivi.endsWith("\u00E4\u00E4") || infinitiivi.endsWith("\u201E\u201E")||infinitiivi.endsWith ("\u0079\u00E4") || infinitiivi.endsWith ("\u0079\u201E")||infinitiivi.endsWith ("\u0065\u00E4") || infinitiivi.endsWith ("\u0065\u201E") ||infinitiivi.endsWith ("\u0069\u00E4") || infinitiivi.endsWith ("\u0069\u201E"))
              
              {
              System.out.println("Verbi kuuluu 1. ryhmaan");
              }
              
              else
              {
              System.out.println("Verbi ei kuulu 1. ryhmaan");
              }               
        }

        }

        Ensin kysytään infinitiivi, sitten toinen merkkijono temp, jota ei käytetä mihinkään.
        Sitten verrataan temp-merkkijonon pituutta ja infiniitivin loppua luokan päättelyyn????


      • öööööööäääääää
        Myypii kirjoitti:

        Hei!

        Kiitos antamasi juttu toimi, mutta nyt minulla on uusi ongelma samassa ohjelmassa.

        Yritin laittaa ohjelman alkuun sellaisen rajoitteen, että sanan täytyy olla vähintään neljä kirjainta pitkä, mutta koodissa on koko ajan ongelmia.

        import java.util.Scanner;
        import java.lang.String;


        public class taivutus1 {

        public static void main (String[] args)
           
           {
              //muuttujien määrittely
           
              String infinitiivi;
                             
              //otetaan scanner toiminto käyttöön
              Scanner lukija = new Scanner (System.in);
              
              //pyydetään käyttäjää syöttämään verbin infinitiivi
              System.out.println("Syota verbin infinitiivi:");
              infinitiivi = lukija.next();
              System.out.println("\n");
              
              int pituus;
              
              String temp = ""; // alustetaan tyhjällä merkkijonolla

              temp = lukija.nextLine(); // luetaan merkkijono
              pituus = temp.length(); // kysytään merkkijonon pituus

              while (pituus 3) & (infinitiivi.endsWith("aa") || infinitiivi.endsWith("ea") || infinitiivi.endsWith("ia") || infinitiivi.endsWith("oa") || infinitiivi.endsWith("ua") || infinitiivi.endsWith("\u00E4\u00E4") || infinitiivi.endsWith("\u201E\u201E")||infinitiivi.endsWith ("\u0079\u00E4") || infinitiivi.endsWith ("\u0079\u201E")||infinitiivi.endsWith ("\u0065\u00E4") || infinitiivi.endsWith ("\u0065\u201E") ||infinitiivi.endsWith ("\u0069\u00E4") || infinitiivi.endsWith ("\u0069\u201E"))
              
              {
              System.out.println("Verbi kuuluu 1. ryhmaan");
              }
              
              else
              {
              System.out.println("Verbi ei kuulu 1. ryhmaan");
              }               
        }

        }

        Edellinen vastaaja jo kommentoi muutamaa virhettä. Koska koodi ei suoraan toimi enkä muista kieliopista mitään, niin vaikea kommentoida itse asiaa. Haetko jotain alla olevan kaltaista ratkasua, joka on väsätty koodisi perusteella, ja ainakin kääntyy...

        Tuossa kirjoittamassasi koodissa kiinnitin huomiota, että "if (pituus" vertailu lauseessa sulkeita oli väärä määrä, ja vertailussa oli käytetty "&" -liitosta vaikka "&&" -liitos olisi ollut oikeampi. Lisäksi ohjelmasi voi jäädä jumiin, tulostaen koko ajan viestiä "Antamasi merkkijono ei ole.." -viestiä. Lisäksi String:n importtaus on turhaa, sillä sen pitäisi tulla automaattisesti.


        --- ALKAA ---

        import java.util.Scanner;

        public class Taivutus {
           
           public static boolean tarksitaPääte(String sana, String[] päätteet) {
              for (int i = 0; i < päätteet.length; i )
                 if (sana.endsWith(päätteet[i]))
                    return true;
              
              return false;
           }

           
           public static boolean onkoRyhmän1Verbi(String infinitiivi) {
              final String[] sallitutPäätteet = {
                 "aa", "ea", "ia", "oa", "ua", "\u00E4\u00E4",
                 "\u201E\u201E", "\u0079\u00E4", "\u0079\u201E",
                 "\u0065\u00E4", "\u0065\u201E", "\u0069\u00E4",
                 "\u0069\u201E"         
              };
              
              return    tarksitaPääte(infinitiivi, sallitutPäätteet);
           }
           
           
           public static void main (String[] args)
           {
              String infinitiivi;
              Scanner lukija = new Scanner (System.in);
              
              do {
                 System.out.print("Syota verbin infinitiivi: ");
                 infinitiivi = lukija.nextLine();

                 if (infinitiivi.length()


      • Myypii
        öööööööäääääää kirjoitti:

        Edellinen vastaaja jo kommentoi muutamaa virhettä. Koska koodi ei suoraan toimi enkä muista kieliopista mitään, niin vaikea kommentoida itse asiaa. Haetko jotain alla olevan kaltaista ratkasua, joka on väsätty koodisi perusteella, ja ainakin kääntyy...

        Tuossa kirjoittamassasi koodissa kiinnitin huomiota, että "if (pituus" vertailu lauseessa sulkeita oli väärä määrä, ja vertailussa oli käytetty "&" -liitosta vaikka "&&" -liitos olisi ollut oikeampi. Lisäksi ohjelmasi voi jäädä jumiin, tulostaen koko ajan viestiä "Antamasi merkkijono ei ole.." -viestiä. Lisäksi String:n importtaus on turhaa, sillä sen pitäisi tulla automaattisesti.


        --- ALKAA ---

        import java.util.Scanner;

        public class Taivutus {
           
           public static boolean tarksitaPääte(String sana, String[] päätteet) {
              for (int i = 0; i < päätteet.length; i )
                 if (sana.endsWith(päätteet[i]))
                    return true;
              
              return false;
           }

           
           public static boolean onkoRyhmän1Verbi(String infinitiivi) {
              final String[] sallitutPäätteet = {
                 "aa", "ea", "ia", "oa", "ua", "\u00E4\u00E4",
                 "\u201E\u201E", "\u0079\u00E4", "\u0079\u201E",
                 "\u0065\u00E4", "\u0065\u201E", "\u0069\u00E4",
                 "\u0069\u201E"         
              };
              
              return    tarksitaPääte(infinitiivi, sallitutPäätteet);
           }
           
           
           public static void main (String[] args)
           {
              String infinitiivi;
              Scanner lukija = new Scanner (System.in);
              
              do {
                 System.out.print("Syota verbin infinitiivi: ");
                 infinitiivi = lukija.nextLine();

                 if (infinitiivi.length()

        Kiitos teille molemmille vastauksista! Pääsin niiden avulla oikeille jäljille :)


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Janne Ahonen E R O A A

      Taas 2 lasta jää vaille ehjää perhettä!
      Kotimaiset julkkisjuorut
      204
      3998
    2. Tekisi niin mieli laittaa sulle viestiä

      En vaan ole varma ollaanko siihen vielä valmiita, vaikka halua löytyykin täältä suunnalta, ja ikävää, ja kaikkea muuta m
      Ikävä
      92
      1906
    3. Miksi ihmeessä?

      Erika Vikman diskattiin, ei osallistu Euroviisuihin – tilalle Gettomasa ja paluun tekevä Cheek
      Ateismi
      30
      1592
    4. Ootko huomannut miten

      pursuat joka puolelta. Sille joka luulee itsestään liikoja 🫵🙋🏻‍♂️
      Ikävä
      165
      1402
    5. Erika Vikman diskattiin, tilalle Gettomasa ja paluun tekevä Cheek

      Erika Vikman diskattiin, ei osallistu Euroviisuihin – tilalle Gettomasa ja paluun tekevä Cheek https://www.rumba.fi/uut
      Maailman menoa
      25
      1276
    6. Pitääkö penkeillä hypätä Martina?

      Eivätkö puistonpenkit ole istumista varten.Ei niitä kannata liata hyppäämällä koskaa likaantuvat eikä siellä kukaan niit
      Kotimaiset julkkisjuorut
      212
      1150
    7. Kerropa ESA miten kävi tuomioiden

      Osaako ESA kertoa miten haukkumasi kunnanhallituksen kävi.
      Puolanka
      39
      1132
    8. Kuinka kauan

      Olet ollut kaivattuusi ihastunut/rakastunut? Tajusitko tunteesi heti, vai syventyivätkö ne hitaasti?
      Ikävä
      94
      1109
    9. Maikkarin tentti: Orpo jälleen rauhallinen ja erittäin hyvä, myös Purra oli hyvä

      Lindtman ja Kaikkonen oli kohtalaisia, sen sijaan punavihreät Koskela ja Virta olivat taas heikkoja. Ja vastustavat jalk
      Maailman menoa
      129
      1093
    10. Milli-helenalla ongelmia

      Suomen virkavallan kanssa. Eipä ole ihme kun on etsintäkuullutettu jenkkilässäkin. Vähiin käy oleskelupaikat virottarell
      Kotimaiset julkkisjuorut
      197
      1026
    Aihe