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

2075

    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. Me työeläkeläiset äänestämme SDP:tä

      SDP on luonut koko työeläkejärjestelmän, jonka hedelmistä saamme nyt nauttia. Kansaneläkelaitos on Maalaisliiton tekele,
      Maailman menoa
      208
      5289
    2. SDP:n johto pesi kätensä häirintäkohusta

      "Suurimman oppositiopuolue SDP:n johto olisi todennäköisimmin halunnut vaieta puolueen ympärillä velloneen häirintäkohun
      Maailman menoa
      49
      4057
    3. SDP on vastuunkantaja, ja siksi suosituin kansan keskuudessa

      Kiusaamiseenkin SDP puuttuu heti sellaisen tultua ilmi. Esimerkiksi persut lakaisevat nämä maton alle ja pahentavat site
      Maailman menoa
      34
      4018
    4. Eikö tunnukin kamalalta, kun en

      anna periksi vaikka parhaasi olet tehnyt antaaksesi täystyrmäyksen? Ja kyllähän minä monta iskua olen saanut ja maannut
      Ikävä
      81
      3746
    5. Persut on Suomen mamutuspuolue nro 1.

      Heti ensimmäisenä persuvuonna 2015 maahantoivat Suomeen 35 tuhatta kunniavierastaan. Tuoreimpana persuvuonna 2025 pers
      Maailman menoa
      25
      3662
    6. SDP on selvästi paras valinta äänestyskopissa

      Puolueella on arvomaailma kohdallaan, sillä on hyvä CV itsenäisen Suomen historiassa vastuunkantajana ja hyvinvointivalt
      Maailman menoa
      67
      3633
    7. Punavihreät puolueet haluavat Suomeen satoja tuhansia kehitysmaalaisia

      SDP, vihreät ja vassarit haluavat nostaa esim. pakolaiskiintiötä todella paljon. Orpon hallituksen aikana maahanmuutto
      Maailman menoa
      30
      2670
    8. Kenen juontajan pitäisi voittaa tänään Kultainen Venla? Ehdolla Pimiä, Holma ja Vaaherkumpu

      Kultainen Venla gaalassa jaetaan tänään tv-alan palkintoja. Yksi suosituimmista kategorioista on Juontaja. Vappu Pimiä
      Suomalaiset julkkikset
      106
      2410
    9. SDP:n selitykset ontuu pahasti - "On käsitelty heti, mutta kukaan ei tiedä"

      Kokoomuslaiset pistää taas demareita nippuun. Tuppuraisen mukaan mukaan SDP:n useat ahdistelutapaukset on käsitelty het
      Maailman menoa
      41
      2366
    10. Oletko nainen turhautunut, kun en tule juttelemaan siellä?

      Haluaisin tottakai tulla. Älä käsitä väärin. Ehkä ensi kerralla?
      Ikävä
      33
      2247
    Aihe