Keskiarvo ei onnistu

Voisiko joku viisas opastaa aloittelevaa? Minulla on tehtävä jota yritän ratkaista enkä nyt tajua olenko ees oikeella suunnalla ja miten edetä.

Tehtävä:
Tee ohjelma, joka kysyy oppilaiden kokeiden arvosanoja ja laskee syötettyjen arvosanojen keskiarvon. Arvosanat ovat liukulukuja väliltä 4-10. Ohjelma kysyy arvosanoja, kunnes annetaan jokin negatiivinen luku. Jos käyttäjän antama arvosana ei ole välillä 4-10, tulostuu ilmoitus "Antamasi arvosana ei kelpaa!" ja arvosanan kysyminen toistuu. Lopuksi ohjelma tulostaa syötettyjen arvosanojen lukumäärän ja niiden keskiarvon näytölle esimerkkitulostuksen mukaisesti. Jos arvosanoja ei annettu yhtään kappaletta, tulostuu ainoastaan ilmoitus "Et antanut yhtään arvosanaa.".

Arvosanojen keskiarvo tulee laskea double-tyyppiseen muuttujaan.

minun yritykseni ratkaista on alla:

import java.util.Scanner;

public class Keskiarvo {

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

    double luku,
    lukujenSumma = 0,
    lukujenKarvo;
System.out.println("Ohjelma laskee syötettyjen arvosanojen keskiarvon.");
   System.out.println("Lopetus negatiivisella kokonaisluvulla.\n");

System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();

System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();
System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();
System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();
System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();
System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();


if (luku = 10)
System.out.println("Antamasi arvosana ei kelpaa!");



if (lukujenLkm == 0)
System.out.println("Et antanut yhtään arvosanaa.\n");
else {
lukujenKarvo = lukujenSumma/lukujenLkm;
System.out.println("\nKeskiarvo on " lukujenKarvo ".\n");
}
}
}
83211
Äänestä

Muut lukivat myös

Vastaukset 8

Vanhimmat

Nyt ohjelmasi toimii näin:
Luet käyttäjän syötteen ensiksi viisi kertaa, jonka jälkeen tarkista _viimeisen_ syötteen, onko se välillä 4 - 10. Jos ei, tulostat virheilmoituksen, mutta jatkat silti suorittamista. Syötettyjen lukujen lukumäärä on aina 0, kun et sitä missään vaiheessa kasvata. Näin ollen ohjelmasi päättyy aina ilmoitukseen "Et antanut yhtään arvosanaa."

Näin sun pitäisi tehdä:
Lue while-loopissa käyttäjän syötteitä. Jos syöte on positiivinen, mutta ei välillä 4 - 10, tulosta virheilmoitus. Jos syöte on välillä 4 - 10, kasvata lukujen summaa syötteellä ja lukujen lukumäärää yhdellä. Jos syöte on negatiivinen, lopeta while ja laske ja tulosta keskiarvo.

Äänestä
  • Tack. Yritän kokeilla noin jos onnistuis.

    Äänestä

  • Mä en nyt jotenkin saa otetta yhtään. Saisko pienen esimerkin? Jotakin hässäkkää teen koko ajan tän kanssa.

    Äänestä

  • ihan sekasin kirjoitti:

    Mä en nyt jotenkin saa otetta yhtään. Saisko pienen esimerkin? Jotakin hässäkkää teen koko ajan tän kanssa.

    mut oletkohan nyt ihan oikealla alalla? monet jotka on harrastaneet vuosia ohjelmointia ja opiskelee tietotekniikkaa eivät nekään saa työtä vaikka ovatkin "keskitaso" opiskelijan yläpuolella...

    Äänestä

  • ihan sekasin kirjoitti:

    Mä en nyt jotenkin saa otetta yhtään. Saisko pienen esimerkin? Jotakin hässäkkää teen koko ajan tän kanssa.

    Lue luvut esim. näin:

    double lukuja=0,summa=0,luku;

    while(true)
    {
    System.out.print("Anna arvosana (4-10): ");
    luku = lukija.nextDouble();

    if(luku 10)
    {
    System.out.println("Antamasi arvosana ei kelpaa!");
    continue;
    }

    summa =luku;
    lukuja ;
    }

    Äänestä

  • ei millään pahalla kirjoitti:

    mut oletkohan nyt ihan oikealla alalla? monet jotka on harrastaneet vuosia ohjelmointia ja opiskelee tietotekniikkaa eivät nekään saa työtä vaikka ovatkin "keskitaso" opiskelijan yläpuolella...

    Pienestä koodaustaidosta on hyötyä vaikkei päätoimisesti koodaisikaan. Esim. järjestelmien ylläpidossa lyhyet skriptit jelppaavat kummasti.

    Äänestä

  • ei millään pahalla kirjoitti:

    mut oletkohan nyt ihan oikealla alalla? monet jotka on harrastaneet vuosia ohjelmointia ja opiskelee tietotekniikkaa eivät nekään saa työtä vaikka ovatkin "keskitaso" opiskelijan yläpuolella...

    Kuka tässä on työn hausta puhunut? Apua pyysin. Lue teksti uudelleen:) Haluan oppia ja kivat ihmiset on auttaneet. Minulla on hyvä duuni ja tästä saan siihen lisämaustetta. Sitäpaitsi sinun asenteellasi päädytään kortistoon. Mitä jos ajattelisit avarammin? Lycka till.

    Äänestä

Alla on eräs esimerkki toteutus. Tuon while -lohkon/silmukan voi toteuttaa monella eri tavalla, riippuen siitä missä järjestyksessä tarkastukset tekee, käytetäänkö break -käskyä silmukasta poistumiseen, jne. Voit esimerkiksi miettiä sitä, miten koodaisit tehtävän jos siinä pitäisi käyttää "while (true) { ... }" lohkoa.


--- KOODI ALKAA ---

import java.util.Scanner;

public class Esimerkki3 {

   public static void main(String[] args) {
      Scanner lukija = new Scanner(System.in);
   
      double arvosana = 0;
      double summa = 0;
      int määrä = 0;

      do {
         System.out.print("Arvosana: ");
         arvosana = lukija.nextDouble();
         
         if ((arvosana >= 4.0) && (arvosana = 0.0) {      
            System.out.println("Antamasi arvosana ei kelpaa!");
         }
      } while(!(arvosana < 0.0));


      if (määrä == 0) {
         System.out.println("Et antanut yhtään arvosanaa.");
      } else {      
         System.out.println("Arvosanoja: " määrä);
         System.out.println("Keskiarvo: " summa/määrä);
      }
   }
}

--- KOODI LOPPUU ---

Äänestä

Kommentoi aloitusta


kuinkas nyt? kirjoitti:

Voisiko joku viisas opastaa aloittelevaa? Minulla on tehtävä jota yritän ratkaista enkä nyt tajua olenko ees oikeella suunnalla ja miten edetä.

Tehtävä:
Tee ohjelma, joka kysyy oppilaiden kokeiden arvosanoja ja laskee syötettyjen arvosanojen keskiarvon. Arvosanat ovat liukulukuja väliltä 4-10. Ohjelma kysyy arvosanoja, kunnes annetaan jokin negatiivinen luku. Jos käyttäjän antama arvosana ei ole välillä 4-10, tulostuu ilmoitus "Antamasi arvosana ei kelpaa!" ja arvosanan kysyminen toistuu. Lopuksi ohjelma tulostaa syötettyjen arvosanojen lukumäärän ja niiden keskiarvon näytölle esimerkkitulostuksen mukaisesti. Jos arvosanoja ei annettu yhtään kappaletta, tulostuu ainoastaan ilmoitus "Et antanut yhtään arvosanaa.".

Arvosanojen keskiarvo tulee laskea double-tyyppiseen muuttujaan.

minun yritykseni ratkaista on alla:

import java.util.Scanner;

public class Keskiarvo {

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

    double luku,
    lukujenSumma = 0,
    lukujenKarvo;
System.out.println("Ohjelma laskee syötettyjen arvosanojen keskiarvon.");
   System.out.println("Lopetus negatiivisella kokonaisluvulla.\n");

System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();

System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();
System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();
System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();
System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();
System.out.print("Anna arvosana (4-10): ");
luku = lukija.nextDouble();


if (luku = 10)
System.out.println("Antamasi arvosana ei kelpaa!");



if (lukujenLkm == 0)
System.out.println("Et antanut yhtään arvosanaa.\n");
else {
lukujenKarvo = lukujenSumma/lukujenLkm;
System.out.println("\nKeskiarvo on " lukujenKarvo ".\n");
}
}
}

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