Java tehtävään apua

Javabeginner

Käytän Eclipseä, mutta itse en ymmärrä miksi ohjelma ei suostu toimimaan. Tarkoituksena olisi tulostaa seuraavanlainen pätkä:

Ohjelma laskee yhteen haluamasi ajanjakson aikana
tehdyt työtunnit sekä keskimääräisen työpäivän pituuden.

Kuinka monta päivää:5
Anna 1. päivän työtunnit:7.4
Anna 2. päivän työtunnit:4.8
Anna 3. päivän työtunnit:7.5
Anna 4. päivän työtunnit:8.6
Anna 5. päivän työtunnit:6.7

Tehdyt työtunnit yhteensä: 35.0
Keskimääräinen työpäivän pituus: 7.0
Syötetyt tunnit: 7.4 4.8 7.5 8.6 6.7


Koodini on tällä hetkellä:

import java.io.*;

public class Tulostus
{
public static void main(String[] args)

{
double paivat;
double paivat2 = 1;
double tunnit;
double i;
double tunnit1 = 0;
double kaikki = 0;
double taulukko[] = new double[31];
double keskimaara;

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

try
{

System.out.print("Ohjelma laskee yhteen haluamasi ajanjakson aikana tehdyt\n");
System.out.print("työtunnit sekä keskimääräisen työpäivän pituuden.\n");
System.out.print("Kuinka monta päivää:");
paivat = Double.parseDouble(in.readLine());




for (i = 1; i < paivat; i )
{
System.out.print("Anna " i ". päivän työtunnit:");
tunnit1 = Double.parseDouble(in.readLine());
kaikki = tunnit1;
taulukko[i] = tunnit1;



}

System.out.print("Tehdyt työtunnit yhteensä:" kaikki);

keskimaara = ((int)((kaikki / paivat) * 10)) / 10.0;

System.out.print("Keskimääräinen työpäivän pituus:\n" keskimaara);



System.out.print("Syötetyt tunnit:");


for (i = 1; i < paivat; i )
{
System.out.print("" taulukko[i]);
}
}
catch(Exception e)
{
System.out.print("virhe!!! ");
}
}
}

Kiitos avusta jo etukäteen

16

2360

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • nolla_on_eka

      En testannu, mutta ainakin yksi virhe löytyy. Taulukon eka alkio on taulukko[0] eikä taulukko[1]

    • Javabeginner

      Juu sain tuon ylläolevan tehtävän hoidettua nyt puolestaan jumitan tälläisessä tehtävässä:

      Alla oleva Java-ohjelman pitäisi tulostaa seuraavanlaisen matriisin:

      Matriisi:

      32 32 2 23 33
      32 23 33 332 32
      42 43 44 32 31
      83 86 56 545 44
      33 37 38 39 30

      Matriisin alkioiden summa: 1757

      Tehtäväni olisi tehdä tähän koodiin metodit matriisi() ja laske_summa() :

      public static int vastaanottaa_kaksi_ulot_taulukon(int[][] taulukolle_nimi);


      import java.io.*;
      import java.util.*;

      public class Matriisi
      {
      public static void main(String[] args)
      {
      int matriisi[][] = new int[5][5];
      int summa;
      String temp;

      try{
      BufferedReader syote = new BufferedReader(new FileReader("matriisi.txt"));
      for(int x = 0; x < 5; x ){
      temp = syote.readLine();
      StringTokenizer eroitin = new StringTokenizer(temp, "\t");

      for(int y = 0; y < 5; y ){
      matriisi[x][y] = Integer.parseInt(eroitin.nextToken());
      }
      }
      syote.close();

      System.out.print("Matriisi:\n\n");
      tulosta_matriisi(matriisi);
      summa = laske_summa(matriisi);
      System.out.print("\nMatriisin alkioiden summa: " summa);

      }catch(Exception e){
      System.out.print("Antamasi syöte oli virheellinen..." e);
      }
      }
      // Metodit tulosta_matriisi() ja laske_summa()
      // kirjoitetaan tähän ...
      }


      Tässä on mitä olen saanut aikaseksi:

      public static void tulosta_matriisi(int[][] natriisi ){
      int x,y;
      for(x = 0; x < 5; x ){
      for(y = 0; y < 5; y ){
      System.out.print(natriisi[x][y] " ");
      System.out.println();

      }
      }
      }
      static void laske_summa(int[][] natriisi);

      int x, y;
      int summa=0;
      for(x = 0; x < 5; x )
      {
      for(y = 0; y < 5; y )
      {
      summa = summa natriisi[x][y];
      }


      System.out.println("Summa on: " summa);
      }

      En itse ainakaan saa selvitettyä tätä.

      • Oho mikä sotku

        for-luuppien loppusulkuja puuttuu, laita luupit sisäkkäin, ei peräkkäin, pitää käydä koko matriisin rivi läpi ja sitten siirtyä seuraavalle riville ja käydä se kokonaan läpi, laske_summa ei ole static....
        Kovasti on sinulla vielä tekemistä.


    • Javabeginner

      Nyt olen kyllä ihan pihalla:, tässä on mitä sain aikaiseksi :D


      void tulosta_matriisi(int[][] natriisi){
      int x;
      int y;


      for(x = 0; x < 5; x ){
      System.out.print(natriisi[x][y] " ");
      for(y = 0; y < 5; y ){
      System.out.println();}
      }
      }

      void laske_summa(int[][] natriisi){

      int x, y;
      int summa;

      for(x = 0; x < 5; x ){
      for(y = 0; y < 5; y ){
      summa = summa natriisi[x][y];}
      }

      System.out.println("Summa on: " summa);
      }
      }

      • muista_sulut

        Katso netistä joku esimerkki sisäkkäisten luuppien käytöstä.
        Ja ole tarkkana aaltosulklujen kanssa. Jos on alkusulku, pitää löytyä myös loppusulku.
        Esim:
        for(i=0;i


      • muista_sulut
        muista_sulut kirjoitti:

        Katso netistä joku esimerkki sisäkkäisten luuppien käytöstä.
        Ja ole tarkkana aaltosulklujen kanssa. Jos on alkusulku, pitää löytyä myös loppusulku.
        Esim:
        for(i=0;i

        No nyt selvis sekavuus ainakin osaksi. Palstalta jää aaltosulut pois, jos ne on omalla rivillä. Tosi kätevää java-palstalla!
        Otetaan uusiksi. Aaltosulkujen tilalla sanat alku ja loppu.

        for(i=0;i


    • Javabeginner

      Kiitos vastauksista, nyt pitäisi olla aaltosulut kohdillaan Eclipsen mukaan, mutta en kyllä saa vieläkään koodia toimimaan :DD

      public static int tulosta_matriisi(int[][] natriisi ){
      int x,y;
      for(x = 0; x < 5; x ){
      for(y = 0; y < 5; y ){
      System.out.print(natriisi[x][y] " ");
      System.out.println();

      }
      }
      }
      public static int laske_summa(int[][] natriisi){

      int x, y;
      int summa=0;
      for(x = 0; x < 5; x )
      {
      for(y = 0; y < 5; y )
      {
      summa = summa natriisi[x][y];
      }
      }

      System.out.println("Summa on: " summa);
      }
      }

      • Maini

        Onhan sulla jossakin main-metodi? Eikä noita laskemis- tai tulostus-metodeja tarvi static-metodeiksi laittaa.
        Main-metodi tarvitaan, jos aiot ajaa ohjelman komentoriviltä.


    • masse

      Auttakaa ummikkoa!! Miten tälläisen saisi ohjelmoitua javalla??

      Kukkiensidontayhdistyksen hallitus on pitkään kinastellut uuden siimaleikkurin hankinnasta (”Pelastakaa piharatamot”- yhdistyksen suureksi kauhuksi). Asiasta joudutaan järjestämään äänestys. Hallituksessa on 9 jäsentä. Tee algoritmi joka laskee (ja ilmoittaa) ”JAA”- äänten ja ”EI”- äänten lukumäärän. Myös tyhjät äänet sallitaan

      hjälp!!

    • what

      Javabeginner, jos jostain ihmeen syystä satut seuraamaan tätä keskustelua edelleen niin how the hell sait ton työaikalaskimen toimimaan? :D Olen taistellut tehtävän parissa nyt päiviä ja ei mene käkättimeen mitenkään että mitä ihmettä tolle tehtävälle enää olisi edes tehtävissä.

      Mulla tyssää siis siihen että ohjelmaan syötetään double arvo ja sen jälkeen antaa suoraan virheilmoituksen. Sehän johtuu siis siitä että ohjelma siinä vaiheessa ottaa vastaan vaan int -tyyppisiä muuttujia vaikka pitäisi ottaa double -tyyppisiä.. MUTTA kun se ei vaan auta että vaihtaa kaikki mahdolliset double -tyyppisiksi ja kaiken järjen mukaan sen pitäisi sen jälkeen toimia mutta ohjelman tarkistus antaa virheilmoituksen: Tarkista, ettet yritä sijoittaa esim. double-tyyppistä arvoa int-tyyppiseen muuttujaan. (??) Ei siis tossa tilanteessa ota vastaan mitään syötteitä kun osaa tosta herjata. Näistä virkkeistä herja tulee

      syotetyt_tunnit = Double.parseDouble(in.readLine());
      taulukko[i] = syotetyt_tunnit;

      Jos joku osaa sanoa että mikä tässä on mätänä niin kerro IHMEESSÄ, kiitos. :D

    • what

      Kannattaa aina käydä täällä suomi24:n keskustelupalstoilla manaamassa jos ei java tehtävistä viopen ohjelman tarkistuksen kanssa tule mitään, nimittäin aina näiden purkausten jäljiltä olen saanut ohjelmani toimimaan viopen vaatimalla tavalla... ;D Yrittelen ensin aina viopen avulla tehdä tehtäviä ja sitten netbeansillä ja sitten viimeisenä tänne keskustelupalstoille kyteksimään jos syttyisi hehkulamppu, ja manaus siis lopuksi niin johan tulee tehtäviä. Tietysti kanssakoodaajia ajatellen laitan valmiin koodin tänne jotta kukaan ei tuhlaisi yhtä paljon aikaa näihin tehtävien tekemiseen kuin minä:

      import java.io.*;

      public class Tunnit {
      public static void main (String[]args){
      double taulukko[] = new double [31];
      double paivat = 0, kaikki = 0, keskipituus = 0, syotetyt_tunnit = 0;
      int i = 1;

      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

      try {
      System.out.println("Ohjelma laskee yhteen haluamasi ajanjakson aikana");
      System.out.println("tehdyt työtunnit sekä keskimääräisen työpäivän pituuden. \n");

      System.out.print("Kuinka monta päivää:");
      paivat = Double.parseDouble(in.readLine());


      for (i = 1; i

      • fukfuk

        Kiitän tästä, mulla oli float doublen tilalla ja toimi ensimmäisen testin hyvin, mutta seuravaan tuli pitkä sarja desimaaleja johon kaatui.


    • 2. kysy (System.out.println...) aluksi haluaako käyttäjä muuttaa kaloreita jouleiksi, vai jouleja kaloreiksi. "Anna 1 jos haluat antaa kaloreita, anna 2 jos haluat antaa jouleja". Tämä annettu luku luetaan talteen muuttujaan muunnos, eli koodissa muunnos = lukija.nextInt();
      miten tein ne?

    • huokaisijanpaluu

      Debuggeri on kova laite. Kannattaa opetella käyttämään. Toinen on tietenkin, että kannattaa opetella javan syntaksi. Osasin 14 vuotiaana jo tehdä paremman koodin kahden viikon ohjelmointikokemuksella kuin tuo, kun tajusin käyttää debugeria siinä välissä ja katsoa watchilla, mitä oli missäkin paikoillaan ... tai no tunnustan - siihen aikaan debuggeri oli hieman huonompi ja jos sattui tekemään koodia symbooliassemblerilla, niin piti itse päätellä virheen syyn. Oli hieman nopeampaa kuin debuggaaminen, mutta miten ihmeessä niin yksinkertaisella kielellä kuin java voi olla tuon oppiminen mitenkään vaikeaa.
      Ja sitten nämä ihmiset päätyvät koodaamaan ja on pakko miettiä heidän työtään katsoessaan mitä helvettiä. Ja kaiken huipuksi samat tyypit päätyvät vetämään koodaamista, eikä heille vieläkään ole avautunut, mikä virhe hommassa on.

      Pieni avautuminen kahdenkymmen viiden vuoden koodaamisen jälkeen. :)

      Eli jos oikeasti haluat oppia tuon koodaamisen, niin mieti omaa koodiasi sen jälkeen kun olet käynyt lenkillä ulkona ja rentoutunut. Vastaus voi olla selvempi.

    • Markkemoi

      Moro, mä teen tota samaa tehtävää. Mulla tää ohjemla toimii kokonaisluvuilla mutta ei suostu toimimaan desimaalilukuja käyttäessä.... Osaako joku sanoa missä vika?

      import java.io.*;
      public class Tunnit {
      public static void main(String[] args) {
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      double summa = 0;
      int paivat = 0;
      double ka = 0;
      int index;
      double vector[] = new double[31];

      try {

      System.out.println("Ohjelma laskee yhteen haluamasi ajanjakson aikana");
      System.out.println("tehdyt työtunnit sekä keskimääräisen työpäivän pituuden.");

      System.out.print("Kuinka monta päivää:");
      paivat = Integer.parseInt(in.readLine());

      for(index = 1; index <= paivat; index ) {
      System.out.print("Anna " index ". päivän työtunnit:");
      vector[index] = Integer.parseInt(in.readLine());
      summa = summa vector[index];
      }
      System.out.println("Tehdyt työtunnit yhteensä: " summa);
      ka = summa / paivat;
      System.out.println("Keskimääräinen työpäivän pituus: " ka);

      System.out.println("Syötetyt tunnit: ");
      for(index = paivat; index > 0; index--) {
      System.out.println(vector[index]);
      }
      } catch(Exception e){
      System.out.println("Error...");
      }
      }
      }

    • markkemoi

      Ei sittenkää mitää, sain toimimaa :D

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Mielessäni vieläkin T

      Harmi että siinä kävi niinkuin kävi, rakastin sinua. Toivotan sulle kaikkea hyvää. Toivottavasti löydät sopivan ja hyvän
      Ikävä
      40
      2052
    2. Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita

      Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita – neljä Jyväskylän Outlaws MC:n jäsentä vangittu: "Määrät p
      Jyväskylä
      46
      1591
    3. Persut petti kannattajansa, totaalisesti !

      Peraujen fundamentalisteille, vaihtkaa saittia. Muille, näin sen näimme. On helppo luvata kehareille, eikä ne ymmärrä,
      Maailman menoa
      29
      1471
    4. Ei luottoa lakko maahan

      Patria menetti sovitun ksupan.
      Suomen Keskusta
      20
      1451
    5. Nellietä Emmaa ja Amandaa stressaa

      Ukkii minnuu Emmaa ja Amandaa stressaa ihan sikana joten voidaanko me koko kolmikko hypätä ukin kainaloon ja syleilyyn k
      Isovanhempien jutut
      6
      1431
    6. Nähtäiskö ylihuomenna taas siellä missä viimeksikin?

      Otetaan ruokaöljyä, banaaneita ja tuorekurkkuja sinne messiin. Tehdään taas sitä meidän salakivaa.
      Ikävä
      1
      1415
    7. Sinäkö se olit...

      Vai olitko? Jostain kumman syystä katse venyi.. Ajelin sitten miten sattuu ja sanoin ääneen siinä se nyt meni😅😅... Lis
      Ikävä
      2
      1377
    8. Housuvaippojen käyttö Suomi vs Ulkomaat

      Suomessa housuvaippoja aletaan käyttämään vauvoilla heti, kun ne alkavat ryömiä. Tuntuu, että ulkomailla housuvaippoihin
      Vaipat
      1
      1310
    9. Hyvää yötä ja kauniita unia!

      Täytyy alkaa taas nukkumaan, että jaksaa taas tämän päivän haasteet. Aikainen tipu madon löytää, vai miten se ärsyttävä
      Tunteet
      2
      1240
    10. Lepakot ja lepakkopönttö

      Ajattelin tehdä lepakkopöntön. Tietääkö joku ovatko lepakot talvella lepakkopöntössä ´vai jossain muualla nukkumassa ta
      5
      1227
    Aihe