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

1995

    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. Laitetaas nyt kirjaimet tänne

      kuka kaipaa ja ketä ?
      Ikävä
      151
      10934
    2. Pieni häivähdys sinusta

      Olet niin totinen
      Ikävä
      52
      5220
    3. Taas ryssittiin oikein kunnolla

      r….ä hyökkäsi Viroon sikaili taas ajattelematta yhtään mitään https://www.is.fi/ulkomaat/art-2000011347289.html
      NATO
      45
      2433
    4. Missä olet ollut tänään kaivattuni?

      Ikävä sai yliotteen ❤️ En nähnyt sua tänään söpö mies
      Ikävä
      30
      2133
    5. Vanha Suola janottaa Iivarilla

      Vanha suola janottaa Siikalatvan kunnanjohtaja Pekka Iivaria. Mies kiertää Kemijärven kyläjuhlia ja kulttuuritapahtumia
      Kemijärvi
      13
      1701
    6. Valtimon Haapajärvellä paatti mäni nurin

      Ikävä onnettomuus Haapajärvellä. Vene hörpppi vettä matkalla saaren. Veneessä ol 5 henkilöä, kolme uiskenteli rantaan,
      Nurmes
      42
      1544
    7. Tiedän kuka sinä noista olet

      Lucky for you, olen rakastunut sinuun joten en reagoi negatiivisesti. Voit kertoa kavereillesi että kyl vaan, rakkautta
      Ikävä
      30
      1241
    8. Känniläiset veneessä?

      Siinä taas päästiin näyttämään miten tyhmiä känniläiset on. Heh heh "Kaikki osalliset ovat täysi-ikäisiä ja alkoholin v
      Nurmes
      35
      1166
    9. Daniel Nummelan linjapuhe 2025

      Kansanlähetyksen toiminnanjohtajan Daniel Nummelan linjapuhe tänään. Rehellistä analyysiä mm. evlut kirkosta ja piispo
      Luterilaisuus
      92
      935
    10. TÄSTÄ TAITAA TULLA SUOMEN HISTORIAN SUURIN USKONNONVAPAUDEN OIKEUDENKÄYNTI.

      Sinun täytyy hyväksyä se että jos sinä vetoat uskonnonvapauteen, silloin sinun tulee antaa myös muille vastaava vapaus o
      Hindulaisuus
      317
      892
    Aihe