lainalaskuriongelma

Eli tuo sisämmäinen while lause pitäisi saada toimimaan kuten myös korko. Tarkoitus olisi että käyttäjä syöttäisi lyhennyskertojen määrän vuodessa ja korko pitäisi mukautua sen lyhennyskertojen määrän mukaisesti oikein. Miten kaavat tehtäisiin ?
for (vuosi = 1; vuosi
15711
Äänestä

Muut lukivat myös

Vastaukset 15

Vanhimmat

Siis herjaako kääntäjä vai meinaatko että vain laskut menee väärin

whilellä pitää olla myös } sulku. Whilen ehdon, lyhennyskerrat jossain kasvaa että se tulee jossain kohtaa suuremmaksi kuin ehto.

Äänestä
  • Herjaa koska ehtolause ei ole oikein. En siis ymmärrä millainen lause pitäisi tulla jotta haluttu toiminta saadaan aikaiseksi. Sulkeet ym. ovat tuttuja, mutta kyse on tuosta while lauseen sisällöstä ja koron saantiin luodusta kaavasta ja mitä se pitää sisällään.

    Äänestä

  • java1221 kirjoitti:

    Herjaa koska ehtolause ei ole oikein. En siis ymmärrä millainen lause pitäisi tulla jotta haluttu toiminta saadaan aikaiseksi. Sulkeet ym. ovat tuttuja, mutta kyse on tuosta while lauseen sisällöstä ja koron saantiin luodusta kaavasta ja mitä se pitää sisällään.

    for lausekkaassa haluat varmaan käyttää primitiivi tyyppiä int, eli

    for (int vuosi = 1; vuosi

    Äänestä

  • Toteuta kirjoitti:

    for lausekkaassa haluat varmaan käyttää primitiivi tyyppiä int, eli

    for (int vuosi = 1; vuosi

    Tuo vuosi on jo määritelty tuolla ohjelman alussa, siksi tuo mainittu for toimii jo oikein. Mutta tuo while lause:

    while (lyhennyskerrat

    Äänestä

  • java1221 kirjoitti:

    Tuo vuosi on jo määritelty tuolla ohjelman alussa, siksi tuo mainittu for toimii jo oikein. Mutta tuo while lause:

    while (lyhennyskerrat

    no missä kohdassa sä kasvatat lyhennyskerrat muuttujan arvoa? ei näy...

    korko = (lainamaara * korkopros *(lyhennyskerrat)/100*360 ;
    // tossakin on sulku väärässä kohdassa? toisekseen jos on pelkkiä kerto ja jakolaskuja niin ei sulkuja tartte ollenkaan

    korko = lainamaara * korkopros *(lyhennyskerrat/100)*360 ;
    // olisko noin?

    // ja sen lyhennyskerrat muuttujan arvon kasvatus, muutama esimerkki
    while (lyhennyskerrat

    Äänestä

  • java1221 kirjoitti:

    Tuo vuosi on jo määritelty tuolla ohjelman alussa, siksi tuo mainittu for toimii jo oikein. Mutta tuo while lause:

    while (lyhennyskerrat

    Aluksi: korko-muuttujan laskemisessa on ylimääräinen kaarisulku. While-loopin lopusta puuttuu kanssa sulku. Seuraavaksi while-silmukan toiminta lyhyesti: While-silmukka suoritetaan niin kauan kun ehto on tosi, eli sinun while(lyhennyskerrat

    Äänestä

  • foobarfoo kirjoitti:

    Aluksi: korko-muuttujan laskemisessa on ylimääräinen kaarisulku. While-loopin lopusta puuttuu kanssa sulku. Seuraavaksi while-silmukan toiminta lyhyesti: While-silmukka suoritetaan niin kauan kun ehto on tosi, eli sinun while(lyhennyskerrat

    Tuossa koodia alusta alkaen. Siitä voitte katsoa mikä mättää. Kysymys mihin apua tarvitaan on lähinnä ongelma koodin sisällössä tuon while kohdan osalta ja korko kohdan osalta. Aaltosulkeet ym. laitan sitten aikanaan kuntoon kunhan ensin jotenkin saisi tuon laskutoimituksen koodiin oikein...

    int vuosi;
    float lyhennys;
    float lainamaara;
    float lainavuodet;
    float maksuera;
    float korko;
    float korkopros;
    float korkoyht;
    float lyhennysyht;
    float maksettavayht;
    float lyhennyskerrat;
    Scanner nappaimisto;

    korkoyht=0;
    lyhennysyht=0;
    maksettavayht=0;
    vuosi=0;

    Locale.setDefault(Locale.ENGLISH);
    nappaimisto = new Scanner(System.in);

    System.out.println("Asuntolainalaskuri");

    System.out.println("Anna lainamäärä?");
    lainamaara = nappaimisto.nextFloat();

    System.out.println("Montako kertaa vuodessa maksat lyhennyksiä?");
    lyhennyskerrat = nappaimisto.nextFloat();

    System.out.println("Anna laina-aika vuosissa?");
    lainavuodet = nappaimisto.nextFloat();

    System.out.println("Anna vuotuinen korkoprosentti?");
    korkopros = nappaimisto.nextFloat();



    if (lainavuodet > 0){
    lyhennys = lainamaara / lainavuodet / lyhennyskerrat;
    }
    else{
    lyhennys = 0;
    }



    System.out.print("");
    System.out.print("");
    System.out.format("%6s %12s %10s %14s %12s %n", "vuosi", "maksuerä", "korko", "lyhennys", "lainamäärä");
    System.out.print ("----------------------------------------------------------------------------------");

    for (vuosi = 1; vuosi

    Äänestä

  • java1221 kirjoitti:

    Tuossa koodia alusta alkaen. Siitä voitte katsoa mikä mättää. Kysymys mihin apua tarvitaan on lähinnä ongelma koodin sisällössä tuon while kohdan osalta ja korko kohdan osalta. Aaltosulkeet ym. laitan sitten aikanaan kuntoon kunhan ensin jotenkin saisi tuon laskutoimituksen koodiin oikein...

    int vuosi;
    float lyhennys;
    float lainamaara;
    float lainavuodet;
    float maksuera;
    float korko;
    float korkopros;
    float korkoyht;
    float lyhennysyht;
    float maksettavayht;
    float lyhennyskerrat;
    Scanner nappaimisto;

    korkoyht=0;
    lyhennysyht=0;
    maksettavayht=0;
    vuosi=0;

    Locale.setDefault(Locale.ENGLISH);
    nappaimisto = new Scanner(System.in);

    System.out.println("Asuntolainalaskuri");

    System.out.println("Anna lainamäärä?");
    lainamaara = nappaimisto.nextFloat();

    System.out.println("Montako kertaa vuodessa maksat lyhennyksiä?");
    lyhennyskerrat = nappaimisto.nextFloat();

    System.out.println("Anna laina-aika vuosissa?");
    lainavuodet = nappaimisto.nextFloat();

    System.out.println("Anna vuotuinen korkoprosentti?");
    korkopros = nappaimisto.nextFloat();



    if (lainavuodet > 0){
    lyhennys = lainamaara / lainavuodet / lyhennyskerrat;
    }
    else{
    lyhennys = 0;
    }



    System.out.print("");
    System.out.print("");
    System.out.format("%6s %12s %10s %14s %12s %n", "vuosi", "maksuerä", "korko", "lyhennys", "lainamäärä");
    System.out.print ("----------------------------------------------------------------------------------");

    for (vuosi = 1; vuosi

    siihen annettu jo esimerkkiä edellisissä viesteissä...

    Äänestä

  • no eikö kirjoitti:

    siihen annettu jo esimerkkiä edellisissä viesteissä...

    Ei tuo korko osuus kyllä toimi siltikään oikein. Tulee ihan järjettömiä summia. Mikäs siinä vielä mättää ?
    korko = lainamaara * korkopros *(lyhennyskerrat /100)*360;

    Äänestä

  • java1221 kirjoitti:

    Ei tuo korko osuus kyllä toimi siltikään oikein. Tulee ihan järjettömiä summia. Mikäs siinä vielä mättää ?
    korko = lainamaara * korkopros *(lyhennyskerrat /100)*360;

    ne oli vain esimerkkejä lyhennyskerrat muuttujan arvon kasvatukseen, emmä sulle korkoja rupee laskeen. Tää foorumi kuitenki Java ohjelmoinnille tarkoitettu...

    Äänestä

  • java1221 kirjoitti:

    Tuossa koodia alusta alkaen. Siitä voitte katsoa mikä mättää. Kysymys mihin apua tarvitaan on lähinnä ongelma koodin sisällössä tuon while kohdan osalta ja korko kohdan osalta. Aaltosulkeet ym. laitan sitten aikanaan kuntoon kunhan ensin jotenkin saisi tuon laskutoimituksen koodiin oikein...

    int vuosi;
    float lyhennys;
    float lainamaara;
    float lainavuodet;
    float maksuera;
    float korko;
    float korkopros;
    float korkoyht;
    float lyhennysyht;
    float maksettavayht;
    float lyhennyskerrat;
    Scanner nappaimisto;

    korkoyht=0;
    lyhennysyht=0;
    maksettavayht=0;
    vuosi=0;

    Locale.setDefault(Locale.ENGLISH);
    nappaimisto = new Scanner(System.in);

    System.out.println("Asuntolainalaskuri");

    System.out.println("Anna lainamäärä?");
    lainamaara = nappaimisto.nextFloat();

    System.out.println("Montako kertaa vuodessa maksat lyhennyksiä?");
    lyhennyskerrat = nappaimisto.nextFloat();

    System.out.println("Anna laina-aika vuosissa?");
    lainavuodet = nappaimisto.nextFloat();

    System.out.println("Anna vuotuinen korkoprosentti?");
    korkopros = nappaimisto.nextFloat();



    if (lainavuodet > 0){
    lyhennys = lainamaara / lainavuodet / lyhennyskerrat;
    }
    else{
    lyhennys = 0;
    }



    System.out.print("");
    System.out.print("");
    System.out.format("%6s %12s %10s %14s %12s %n", "vuosi", "maksuerä", "korko", "lyhennys", "lainamäärä");
    System.out.print ("----------------------------------------------------------------------------------");

    for (vuosi = 1; vuosi

    while-lauseeseen tarvitaan oma kierroslaskuri. Muuttuja lyhennyskerrat ei käy siihen tarkoitukseen.

    Äänestä

  • ... kirjoitti:

    while-lauseeseen tarvitaan oma kierroslaskuri. Muuttuja lyhennyskerrat ei käy siihen tarkoitukseen.

    olet oikeassa. Ongelma on että mikä sen pitäisi olla, mielestäni kun olen kokeillut jo kaikkia järkeviä mitä minulle tulee mieleeni...

    Äänestä

  • java1221 kirjoitti:

    olet oikeassa. Ongelma on että mikä sen pitäisi olla, mielestäni kun olen kokeillut jo kaikkia järkeviä mitä minulle tulee mieleeni...

    Eli tarvitset laskurin, jossa sama arvo kuin lyhennyskerrat-muuttujalla ja jota pystyt muuttamaan.

    for(ehto){
    int laskuri = lyhennyskerrat;
    while(laskuri < 12){
    //laskut
    laskuri--;
    }
    }

    Äänestä

  • foobarfoo kirjoitti:

    Eli tarvitset laskurin, jossa sama arvo kuin lyhennyskerrat-muuttujalla ja jota pystyt muuttamaan.

    for(ehto){
    int laskuri = lyhennyskerrat;
    while(laskuri < 12){
    //laskut
    laskuri--;
    }
    }

    Eipä kyllä tuollakaan toimi.. Siitä tulee päättymätön simukka joka ei koskaan lopu, tuollahan laskuri toistaa itseään niin kauan kunnes lyhennyskerrat on alle 12 eli tässä tapauksessa aina. Parempia ideoita ? :)

    Äänestä

  • java1221 kirjoitti:

    Eipä kyllä tuollakaan toimi.. Siitä tulee päättymätön simukka joka ei koskaan lopu, tuollahan laskuri toistaa itseään niin kauan kunnes lyhennyskerrat on alle 12 eli tässä tapauksessa aina. Parempia ideoita ? :)

    Et tee koodissasi missään tarkistusta, että lyhennysten määrä on alle 12 (et muutenkaan tarkistele noita syötettyjä tietoja).
    Mutta kun pyysit parempaan ideaa, niin kokeillaan:

    int laskuri = 0;
    while(laskuri < lyhennyskerrat){
    laskuri ;
    }

    Äänestä

Kommentoi aloitusta


java1212 kirjoitti:

Eli tuo sisämmäinen while lause pitäisi saada toimimaan kuten myös korko. Tarkoitus olisi että käyttäjä syöttäisi lyhennyskertojen määrän vuodessa ja korko pitäisi mukautua sen lyhennyskertojen määrän mukaisesti oikein. Miten kaavat tehtäisiin ?
for (vuosi = 1; vuosi

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu