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");
}
}
}
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");
}
}
}
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.
Tack. Yritän kokeilla noin jos onnistuis.
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...
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 ;
}
Pienestä koodaustaidosta on hyötyä vaikkei päätoimisesti koodaisikaan. Esim. järjestelmien ylläpidossa lyhyet skriptit jelppaavat kummasti.
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.
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 ---