MOOC tehtävä 24 mättää!

Ei vaan osaa

Mikä tässä koodissa mättää kun MOOC tarkistus antaa vain 88% pisteistä.
Ulos tulee virhe: Komennon ratkaise sammuta, tulee ohjata robotti työntämään laatikko kohdealueelle. Eli mitä se tarkoittaa?
-------------------------------------------------------------------------------------------------------

import java.util.Scanner;
import robotti.Ohjain;

public class Paaohjelma {

public static void main(String[] args) {
Scanner lukija = new Scanner(System.in);

Ohjain.asetaLaatikkoSatunnaisesti();
Ohjain.kaynnista();

// kertoo robotin x- ja y-koordinaatit
int robottiX = Ohjain.robottiX();
int robottiY = Ohjain.robottiY();

// kertoo laatikon x- ja y-koordinaatit
int laatikkoX = Ohjain.laatikkoX();
int laatikkoY = Ohjain.laatikkoY();

// kertoo rahtialueen x- ja y-koordinaatit
int tavoiteX = Ohjain.tavoiteX();
int tavoiteY = Ohjain.tavoiteY();

while (true) {
System.out.print("Komento (sammuta, vasen, oikea, liiku, liikuMonta, ratkaise): ");
String komento = lukija.nextLine();
if (komento.equals("sammuta")) {
Ohjain.sammuta();
break;

} else if (komento.equals("vasen")) {
Ohjain.vasen();

} else if (komento.equals("oikea")) {
Ohjain.oikea();

} else if (komento.equals("liiku")) {
Ohjain.liiku();

} else if (komento.equals("liikuMonta")) {
System.out.print("Kuinka monta askelta: ");
int askel = Integer.parseInt(lukija.nextLine());
Ohjain.liikuMonta(askel);

} else if (komento.equals("ratkaise")) {
Ohjain.vasen();

int laatikolleY = laatikkoY - robottiY;
int laatikolleX = laatikkoX - robottiX;
int tavoitteelleY = tavoiteY - laatikkoY;
int tavoitteelleX = tavoiteX - laatikkoX - 1;

Ohjain.liikuMonta(laatikolleY);
Ohjain.oikea();
Ohjain.liikuMonta(laatikolleX);
Ohjain.liikuMonta(tavoitteelleX);

Ohjain.vasen();
Ohjain.liiku();
Ohjain.oikea();
Ohjain.liiku();
Ohjain.oikea();
Ohjain.liikuMonta(tavoitteelleY);
Ohjain.liiku();
Ohjain.liikuMonta(tavoitteelleX);

}
}
}
}

10

2049

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • paakalloohjelma

      Muistuttaa aika paljon C-kieltä JAVA kyllä, tiedän erään ammattikorkean yliopettajan joka tietäisi noista, itse en JAVA:a en juurikaan tunne, C:tä sekä Assemblyä kyllä.

      Muuta funktion nimeksi "Paakalloohjelma"

    • Javaw

      Sulla on break-lause tossa ekassa if-lauseessa, jolloin metodin suoritus loppuu.

      Break vain switch...caseihin ja looppeihin.

      • 3Timo

        Ja en nyt me varmaks sanomaan, mut yleensä hyviin btapoihin kuuluu alustaa muuttujat (yleensä nollaks) ennenkuin niitä aletaan käyttämään? Nythän tossa pelkästään luetaan noi robotin ajurin antamat koordinaatit, jotka voi alkutilanteessaan olla ihan mitä tahansa!?


    • aloittelija

      Vastaus tulee hiukan myöhässä. Itsekkin jonkun aikaa tehtävää pähkäilin, mutta kokeile tuolla (ellet jo ole ratkaisua keksinyt) :

      // Robotin ohjaus
      int laatikolleY = laatikkoY - robottiY;
      int laatikolleX = laatikkoX - robottiX;
      int tavoitteelleY = laatikkoY - tavoiteY;
      int tavoitteelleX = tavoiteX - laatikkoX;

      Ohjain.vasen();
      Ohjain.liikuMonta(laatikolleY);
      Ohjain.oikea();
      Ohjain.liikuMonta(laatikolleX);
      Ohjain.liikuMonta(tavoitteelleX - 1);
      Ohjain.vasen();
      Ohjain.liiku();
      Ohjain.oikea();
      Ohjain.liiku();
      Ohjain.oikea();
      Ohjain.liikuMonta(tavoitteelleY);

      • Koodaajaksiko

        Ei toimi näin, sillä jos robotti lähtee vierestä, niin se tekee saman kaavan ylempänä. Tämä tehtävä on vaikea...


    • poweruser

      ei vitun takkutukka

    • ayyadf

      Onko kellää 100% koodia?

    • ystävällinen_herrasmies
    • jolan
      • close

        Tuo oli ihan hyvä yritys, mutta ei kuitenkaan oikea vastaus. Vaikka järjestelmä sen hyväksyisikin niin tehtävänannossa on sanottu, että "Komennon "ratkaise" tulee toimia myös silloin, kun se annetaan komennon "viereen" jälkeen.", jota tämä kyseisen koodi ei toteuta.


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

    Luetuimmat keskustelut

    1. Nasima löi Jussille luun kurkkuun

      Nasima kertoi ettei Jussi sovi puhemieheksi, koska sallii rasismin. Mihin toimiin perussuomalaiset ryhtyvät? Kuka nouse
      Maailman menoa
      523
      8857
    2. Razmyar on säälittävä - puhemiehellä ei ole mitään syytä ottaa kantaa tähän "silmäkohuun"

      jonka toimittajat sai aikaan. Asia ei kuulu puhemiehelle millään lailla. Razmyar haluaa taas vaan huomiota. Mutta jos r
      Maailman menoa
      158
      6122
    3. Miten Eerolan silmäkuvat voivat levitä muutamassa tunnissa ympäri maailmaa?

      Seuraako koko maailma persujen ja erityisesti Eerolan somea reaaliajassa? Edes kansanedustajan itsemurha eduskuntatalos
      Maailman menoa
      359
      5145
    4. Siviilipalvelusmies Halla-aho normalisoi rasismin perussuomalaisissa

      SMP:n tuhkille perustettu puolue ei ollut ihmisiä vastaan, vaan instituutiokriittinen. "Missä EU - siellä ongelma", oli
      Perussuomalaiset
      66
      4739
    5. Suomalaisilta vaaditaan valtavasti suvaitsevaisuutta - miksi sitä ei vaadita muslimeilta

      Suomalaisilta vaaditaan kaikkea, pitää olla suvaitsevainen ja hyväksyä vieraiden tavat, rasisti ei saa olla jne. Miksi s
      Maailman menoa
      98
      4341
    6. Juuri Suomen valtamedian toimittajat teki "silmävääntelystä" sen kohun

      ja ilmeisesti ottivat yhteyttä myös ulkomaisiin medioihin, että katsokaas tätä. Mutta Japanin medioissa on asiaan suhta
      Maailman menoa
      166
      4043
    7. SDP:n kansanedustaja Marko Asell: Suomen myönnettävä maahanmuuton ongelmat

      Hänen mielestään Suomen pitää pyrkiä rajoittamaan jyrkästi turvapaikanhakijoiden pääsyä maahan ja hän arvioi, että maaha
      Maailman menoa
      184
      3922
    8. Sinun ja kaivatun nimikirjaimet

      Mitkä ne on ? Meillä H❤️M 👩‍❤️‍👩
      Ikävä
      91
      1848
    9. Onko sinulla ja kaivatulla

      joku yhteinen tärkeä paikka?
      Ikävä
      103
      1394
    10. sä oot ehkä

      maailman omituisin tyyppi
      Ikävä
      47
      949
    Aihe