Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Miten vertaillaan compareTo-metodilla?

Sivun loppuun

kayttaja-12707 [02.02.2014 13:26:40]

#

Kirjoita ohjelma, joka ilmoittaa kahden annetun merkkijonon aakkosjärjestyksen
muodossa:
merkkijonot ovat samoja
ensimmäinen merkkijono on aakkosissa aikaisemmin
ensimmäinen merkkijono on aakkosissa myöhemmin
Huomaa, että merkkijonoja ei voi vertailla yhtäsuuruusvertailulla (==) vaan on käytettävä compareTo()-metodia
eli miten toi compareTo()toimii

package javaharj;
import java.util.Scanner;
public class java13 {
static Scanner lukija = new Scanner (System.in);
    public static void main(String[] args) {
 int kirjain1,kirjain2;
 System.out.print("Anna  kirjain1:");
kirjain1 = lukija.nextInt();
System.out.print("Anna  kirjain2:");
kirjain2 = lukija.nextInt();
 if ( (kirjain1 == kirjain2) {
 System.out.println(" merkkijonot ovat samoja" );
} else if ( kirjain1 > kirjain2 ) {
    System.out.println("ensimmäinen merkkijono on aakkosissa aikaisemmin");
    } else if ( kirjain1 < kirjain2 ) {
    System.out.println("ensimmäinen merkkijono on aakkosissa myöhemmin.");

 }



    }

}

Lisäys: niin ja luin tosta java sivulta mutta en oikein ymmärtynyt miten se toimii?

makumaku [02.02.2014 13:55:31]

#

Mikset vain kirjoita Googleen "java compareTo()" ?
Ei kai tuo voi olla noin vaikeaa.

kayttaja-12707 [02.02.2014 15:29:33]

#

sain tehtävän tehtyä
en kyllä tajua kuka jaksaa olla ohjelmoija

Metabolix [02.02.2014 15:52:23]

#

kayttaja-12707 kirjoitti:

en kyllä tajua kuka jaksaa olla ohjelmoija

Melkein kuin yhteenlaskua opetteleva lapsi sanoisi, että ei tajua, kuka jaksaa olla matemaatikko. Siis nykyisillä taidoillasi et ole vielä ohjelmointia nähnytkään.

Kerrotaan nyt vielä ongelman ratkaisu: merkkijonojen pitää tietenkin olla String-tyyppisiä, ja compareTo-metodin palauttama luku on negatiivinen, jos ensimmäinen on pienempi (aakkosissa aiemmin), nolla, jos ovat samanarvoiset, ja positiivinen, jos ensimmäinen on suurempi (aakkosissa myöhemmin).

Jatkossa voisi olla hyvä lukea sen kurssin oppimateriaalit, ei varmaan ole tyhjästä temmattu noita tehtäviä. Jos nykyisellä kurssillasi ei opeteta tarpeeksi, tee vaikka HY:n MOOC-kurssi.

kayttaja-12707 [02.02.2014 16:05:06]

#

package javaharj;
import java.util.Scanner;

public class co {
static Scanner lukija = new Scanner (System.in);
    public static void main(String[] args) {
 int result;
 String kirjain1="a";
 String kirjain2="b";
 result = kirjain1.compareTo(kirjain2);
 if (result  ==0) {
 System.out.println("merkkijonot ovat samoja");
 }else if (result < 0 ) {
 System.out.println("ensimmäinen merkkijono on aakkosissa aikaisemmin");
    } else if ( result > 0 ) {
 System.out.print("ensimmäinen merkkijono on aakkosissa myöhemmin:");


 }

    }

}

ei toimikaan (luin tehtävänannon uudestaan)
eli miten saan tehtyä tämän kahden annetun merkkijonon
toihan muuten toimii mutta toi puutuu eli miten toi lisätään?
jos olisi pelkät numerot tekisin näin

package javaharj;
import java.util.Scanner;
public class java12 {
static Scanner lukija = new Scanner (System.in);
    public static void main(String[] args) {
 int luku1,luku2;
 System.out.print("Anna  luku:");
luku1 = lukija.nextInt();
System.out.print("Anna  luku:");
luku2 = lukija.nextInt();
 if ( luku1 == luku2 ) {
 System.out.println(" luvut ovat yhtä suuria" );
} else if ( luku1 > luku2 ) {
    System.out.println("ensimmäinen luku on suurempi");
    } else if ( luku1 < luku2 ) {
    System.out.println("ensimmäinen luku on pienempi.");

 }



    }

}

Metabolix [02.02.2014 16:06:57]

#

Voit käyttää nextIntin sijaan metodeita next (yksi sana) tai nextLine (yksi rivi). Varmaan kerrotaan kurssisi materiaaleissa.

kayttaja-12707 [02.02.2014 16:08:15]

#

Metabolix kirjoitti:

Jatkossa voisi olla hyvä lukea sen kurssin oppimateriaalit,

joo luin mutta materiaalissa ei olut mitään mainitaan tästä
compareTo

Lisäys:

Metabolix kirjoitti:

kayttaja-12707 kirjoitti:

en kyllä tajua kuka jaksaa olla ohjelmoija

Melkein kuin yhteenlaskua opetteleva lapsi sanoisi, että ei tajua, kuka jaksaa olla matemaatikko. Siis nykyisillä taidoillasi et ole vielä ohjelmointia nähnytkään.

joo uskotaan
iso respect teille (tosi ohjelmoijat)
itse olen ex kuituhitsari

Lisäys:

package javaharj;
import java.util.Scanner;

public class co {
static Scanner lukija = new Scanner (System.in);
    public static void main(String[] args) {
 int result;
 System.out.print("Anna kirjain1:");
lukija.nextLine();
System.out.print("Anna  kirjain2:");
lukija.nextLine();
 String kirjain1="Anna kirjain1:";
 String kirjain2="Anna  kirjain2:";
 result = kirjain1.compareTo(kirjain2);
 if (result  ==0) {
 System.out.println("merkkijonot ovat samoja");
 }else if (result < 0 ) {
 System.out.println("ensimmäinen merkkijono on aakkosissa aikaisemmin");
    } else if ( result > 0 ) {
 System.out.print("ensimmäinen merkkijono on aakkosissa myöhemmin:");


 }

    }

}

eli mikä on pielessä?
vai onko kaikki pielessä?

Metabolix [04.02.2014 17:25:43]

#

Mietipä nyt, mitä tässä tapahtuu:

lukija.nextLine();
String kirjain1="Anna kirjain1:";

Mieti, mikä tässä koodissa on toisin:

int luku1;
luku1 = lukija.nextInt();

Saisitko jotenkin muokattua ensin mainitut rivit niin, että ne muistuttaisivat idealtaan enemmän tuota jälkimmäistä mutta intin tilalla olisi String ja nextIntin tilalla nextLine?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta