Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Viopen Java-tehtävissä ongelmia

Sivun loppuun

kayttaja-12707 [16.05.2015 09:50:08]

#

tehtävä on yksikertainen enkä lyödä virhettä tästä eli mikä tässä pielessä?

 public class ŽTulostusŽ {
	   public static void main(String[] args) {
	      System.out.println("Terve vaan kaikille!\n");
	   }
	   }

tehtävä
Ohjelma kirjoitetaan luokkaan, jonka nimi on ŽTulostusŽ.
Esimerkkitulostus


Terve vaan kaikille!

Grez [16.05.2015 10:18:35]

#

Hieman ihmetyttää, että miksi tulostat kaksi rivinvaihtoa (println tulostaa rivinvaihdon loppuun ja lisäksi olet laittanutmerkkijonon loppuun \n )

Lisäksi mietin pitäisikö tehtävänannossa näkyä Ž merkkien asemesta lainausmerkit, eli pitäisikö kenties luokan nimen kuitenkin olla vain Tulostus

kayttaja-12707 [16.05.2015 10:46:41]

#

kiitos tämä auttoi

kayttaja-12707 [16.05.2015 17:12:06]

#

mikä tässä on vikana olen mietinyt kauan

package javaharj;
import java.util.Scanner;

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

        double luku1, luku2;
         double summa;

       Scanner syote = new Scanner(System.in);
       System.out.println("Anna 1. luku:");
        luku1 = syote.nextDouble();
        System.out.println("Anna 2. luku:");
        luku2 = syote.nextDouble();

         summa = luku1+luku2;


          System.out.println("Antamiesi lukujen summa on: " + summa);
         syote.close();
     }

tehtävä on
Ohjelma kirjoitetaan luokkaan, jonka nimi on ŽLaskuŽ.
Esimerkkitulostus


Anna ensimmäinen luku:4
Anna toinen luku:7
Antamiesi lukujen summa on 11

peran [16.05.2015 17:17:44]

#

Äkkiseltään katsottuna lopusta puuttuu }.

Metabolix [16.05.2015 17:19:18]

#

Asenna koneellesi Java-kehitysympäristö (esim. Eclipse tai NetBeans) ja testaa ohjelmia itse, niin saat tällaiset yksinkertaiset asiat helposti selville.

fergusq [16.05.2015 17:21:38]

#

Mitä kääntäjä antaa virheeksi? Yleensä virheviestien lukeminen on hyvä taito oppia. Ainakin yksinkertaiset syntaksivirheet sillä saa heti korjattua

Muutenkin, jos jokin ohjelma ei toimi, kannattaa kertoa miten se ei toimi sen sijasta, että laittaa vain koodin tänne. Esimerkiksi Terve vaan -koodissasi ei minun mielestäni ole mitään vikaa. (Siis jos ei oteta lukuun ylimääräistä rivinvaihtoa ja Ž-merkkejä, mutta eiväthän Ž-merkit ole kiellettyjä luokkien nimissä...?)

Grez [16.05.2015 17:31:40]

#

fergusq kirjoitti:

eiväthän Ž-merkit ole kiellettyjä luokkien nimissä...?)

Tehtävänannossa oli vaatimuksena että luokka on juuri tietyn niminen. Sinänsä kyllä aika köyhä tuo Viope jos ei anna mitään selitystä virheistä. (Luokka väärän niminen tms)

kayttaja-12707 [16.05.2015 18:12:23]

#

tämäm virheen viope antaa nyt
Muuttujaa, metodia tai luokkaa ei löydy.

Tarkista oletko kirjoittanut vahingossa metodin nimen väärin yrittäessäsi kutsua sitä.
Tarkista yritätkö käyttää muuttujaa, jota ei ole määritelty.
Tarkista oletko kirjoittanut luokan nimen väärin yrittäessäsi luoda uutta oliota luokasta.
Tarkista oletko kirjoittanut pakkauksen nimen väärin import-lauseessa.

Lisäys:

peran kirjoitti:

Äkkiseltään katsottuna lopusta puuttuu }.

tämä korjattu siis nyt

peran [16.05.2015 18:29:46]

#

Tapa1:
Kommentoi ylin rivi, ja nimeä java-tiedosto Lasku.java:ksi.
Sitten vain...

javac Lasku.java

Tapa2:
Luo kansio javaharj
Käännä ohjelma käskyllä:

javac Lasku.java

siirrä Lasku.class javaharj-kansioon.

Käynnistä ohjelma:

java javaharj.Lasku

Pitäisi toimia. Ainakin itselläni toimii...

kayttaja-12707 [16.05.2015 18:40:42]

#

import java.util.Scanner;

public class javac Lasku.java {
     public static void main(String[] args) {

        double luku1, luku2;
         double summa;

       Scanner syote = new Scanner(System.in);
       System.out.println("Anna 1. luku:");
        luku1 = syote.nextDouble();
        System.out.println("Anna 2. luku:");
        luku2 = syote.nextDouble();

         summa = luku1+luku2;

          System.out.println("Antamiesi lukujen summa on: " + summa);
         syote.close();
     }
 }

vielä herjaa tälläistä Virhe lähdekoodin rakenteessa

Tarkista oletko unohtanut {-merkin.

fergusq [16.05.2015 18:53:22]

#

Kai sinä tiedät, mikä javac on? Se on komentoriviohjelma, jolla voi kääntää .java -tiedoston .class -tiedostoksi. Sinun pitää siis ajaa peranin komennot komentoriviltä, jos haluat ja osaat käyttää komentoriviä.

Koodissasi ei ole määrittelemättömiä muuttujia. Eikö Viope kerro, minkä niminen se määrittelemätön muuttuja on tai millä rivillä se sijaitsee?

peran [16.05.2015 19:04:36]

#

Joo-o ei mennyt ihan putkeen.

Ei sitä javac:tä pidä laittaa luokan nimeen, vaan kääntää sen avulla.

Ilmeisesti osaat kääntää ohjelman Viopen kautta, joten minun tarjoamani javac-komentorivikäsky sotki hivenen.

Toimiva koodi on...

import java.util.Scanner;

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

        double luku1, luku2;
         double summa;

       Scanner syote = new Scanner(System.in);
       System.out.println("Anna 1. luku:");
        luku1 = syote.nextDouble();
        System.out.println("Anna 2. luku:");
        luku2 = syote.nextDouble();

         summa = luku1+luku2;


          System.out.println("Antamiesi lukujen summa on: " + summa);
         syote.close();
     }
}

Ei oikeastaan pitäisi antaa valmista koodia, mutta oma koodisi oli sen verran hyvä yritys, joten siksi.

kayttaja-12707 [16.05.2015 19:10:58]

#

OHJELMASI EI TOIMI OIKEIN
Ohjelmasi tulosti seuraavasti:

Anna 1. luku:
4
ei toimi vieläkään

Anna 2. luku:
7
Antamiesi lukujen summa on: 11.0


Ohjelman olisi pitänyt tulostaa näin:

Anna ensimmäinen luku:4
Anna toinen luku:7
Antamiesi lukujen summa on 11

Valkoinen alue kertoo mihin asti ohjelmasi tulosti oikein.
:lla kuvataan rivinvaihtoa
Tulosteiden vertailussa ei huomioida eroja, jotka johtuvat rivinvaihdoista (\n), tabulaattori-merkeistä (\t), välilyönneistä tai isoista ja pienistä kirjaimista.

Lisäys:

koodi siis tämä

import java.util.Scanner;

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

        double luku1, luku2;
         double summa;

       Scanner syote = new Scanner(System.in);
       System.out.println("Anna 1. luku:");
        luku1 = syote.nextDouble();
        System.out.println("Anna 2. luku:");
        luku2 = syote.nextDouble();

         summa = luku1+luku2;


          System.out.println("Antamiesi lukujen summa on: " + summa);
         syote.close();
     }
}

Lisäys:

koko tehtävänanto
Tee ohjelma, joka pyytää käyttäjältä kaksi kokonaislukua, laskee lukujen summan ja tulostaa tuloksen näytölle. Tulostuksen jälkeen ohjelma sulkee itsensä.

Vihje:
Ohjelma voidaan kirjoittaa pitkälti samoin kuin luvun esimerkki. Voit toteuttaa ohjelman monella tavalla, mutta todennäköisesti tarvitset ohjelmassa kahta muuttujaa. Tässä ohjelmassa tarvitset yhteenlaskuoperaattoria +.

Ohjelma kirjoitetaan luokkaan, jonka nimi on ŽLaskuŽ.
Esimerkkitulostus


Anna ensimmäinen luku:4
Anna toinen luku:7
Antamiesi lukujen summa on 11

Lisäys:

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

        double luku1, luku2;
         double summa;

       Scanner syote = new Scanner(System.in);
       System.out.println("Anna 1. luku:");
        luku1 = syote.nextDouble();
        System.out.println("Anna 2. luku:");
        luku2 = syote.nextDouble();

         summa = luku1+luku2;


          System.out.println("Antamiesi lukujen summa on: " + summa);

            // kokeilin break tähän
         syote.close();
   // ja myös tähän  break;
     }
}

niin sitten tulee tämä
Virhe break-lauseen käytössä.

Olet käyttänyt break-lausetta paikassa, jossa se ei ole sallittu.
Voit käyttää break-lausetta vain toisto-rakenteessa ja switch-lauseen sisällä.

peran [16.05.2015 19:27:55]

#

kayttaja-12707 kirjoitti:

OHJELMASI EI TOIMI OIKEIN

Jopas se on tarkka, joten pilkun viilaukseen.

Lisäksi se herjaa liukuluvun käytöstä eli ilmeisesti pitäisi käyttää kokonaislukuja:

import java.util.Scanner;

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

        int luku1, luku2;
        int summa;

       Scanner syote = new Scanner(System.in);
       System.out.print("Anna ensimmäinen luku:");
        luku1 = syote.nextInt();
        System.out.print("Anna toinen luku:");
        luku2 = syote.nextInt();

         summa = luku1+luku2;


          System.out.println("Antamiesi lukujen summa on: " + summa);
         syote.close();
     }
}

breakkia ei pitäisi tarvita käyttää.

Edit - Yritä korjata virheet virheilmoitusten perusteella. Noi automaatti-ohjelmantarkastajat ovat ikävän pilkuntarkkuuden vaativia.

Metabolix [16.05.2015 19:37:59]

#

kayttaja-12707 kirjoitti:

kokeilin break tähän

Miksi ihmeessä? Mitä ongelmaa yritit ratkaista break-sanalla?

kayttaja-12707 [16.05.2015 20:13:49]

#

Metabolix kirjoitti:

kayttaja-12707 kirjoitti:

kokeilin break tähän

Miksi ihmeessä? Mitä ongelmaa yritit ratkaista break-sanalla?

tätä kohtaa yritin tehdä
Tulostuksen jälkeen ohjelma sulkee itsensä

Lisäys:

Tee ohjelma, joka pyytää käyttäjältä kaksi kokonaislukua, laskee lukujen summan ja tulostaa tuloksen näytölle. Tulostuksen jälkeen ohjelma sulkee itsensä.
tätä yritin tehdä siis

Lisäys:

import java.util.Scanner;

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

        int luku1, luku2;
        int summa;

       Scanner syote = new Scanner(System.in);
       System.out.print("Anna ensimmäinen luku:");
        luku1 = syote.nextInt();
        System.out.print("Anna toinen luku:");
        luku2 = syote.nextInt();

         summa = luku1+luku2;


          System.out.println("Antamiesi lukujen summa on: " + summa);
         syote.close();
     }
}

edelleen sama ongelma
OHJELMASI EI TOIMI OIKEIN
Ohjelmasi tulosti seuraavasti:

Anna ensimmäinen luku:4
Anna toinen luku:7
Antamiesi lukujen summa on: 11


Ohjelman olisi pitänyt tulostaa näin:

Anna ensimmäinen luku:4
Anna toinen luku:7
Antamiesi lukujen summa on 11

Valkoinen alue kertoo mihin asti ohjelmasi tulosti oikein.
:lla kuvataan rivinvaihtoa
Tulosteiden vertailussa ei huomioida eroja, jotka johtuvat rivinvaihdoista (\n), tabulaattori-merkeistä (\t), välilyönneistä tai isoista ja pienistä kirjaimista

peran [16.05.2015 20:22:18]

#

Kuten sanoin, niin automaattinen tarkastaja on pilkunviilaaja. En huomannut, että summan tulostuksessa on ylimääräinen ':'.
Eli pitäisi olla seuraavasti:

System.out.println("Antamiesi lukujen summa on " + summa);

Metabolix [16.05.2015 20:33:55]

#

kayttaja-12707 kirjoitti:

tätä kohtaa yritin tehdä
Tulostuksen jälkeen ohjelma sulkee itsensä

Oliko mielestäsi sitten ongelmana, että ohjelma ei sulkeudu?

Eli ihan oikeasti testaa ohjelmasi itse, lue Viopen virheilmoitukset ja korjaa vain todelliset virheet. Nythän Viope ilmoitti sinulle, että ohjelma tulosti asian X ja sen piti tulostaa asia Y, joten vertaamalla näitä pitäisi löytää virhe. Jos vika olisi siinä, että ohjelma ei sammu, varmaan Viope ilmoittaisi asiasta jotenkin eri tavalla, tai ainakin näkisit ongelman itse, kun testaat ohjelmaasi.

kayttaja-12707 [17.05.2015 07:49:17]

#

peran kirjoitti:

Kuten sanoin, niin automaattinen tarkastaja on pilkunviilaaja. En huomannut, että summan tulostuksessa on ylimääräinen ':'.
Eli pitäisi olla seuraavasti:

System.out.println("Antamiesi lukujen summa on " + summa);

joo tästä se oli kiinni
kiitos

Lisäys:

Metabolix kirjoitti:

kayttaja-12707 kirjoitti:

tätä kohtaa yritin tehdä
Tulostuksen jälkeen ohjelma sulkee itsensä

Oliko mielestäsi sitten ongelmana, että ohjelma ei sulkeudu?

Eli ihan oikeasti testaa ohjelmasi itse, lue Viopen virheilmoitukset ja korjaa vain todelliset virheet. Nythän Viope ilmoitti sinulle, että ohjelma tulosti asian X ja sen piti tulostaa asia Y, joten vertaamalla näitä pitäisi löytää virhe. Jos vika olisi siinä, että ohjelma ei sammu, varmaan Viope ilmoittaisi asiasta jotenkin eri tavalla, tai ainakin näkisit ongelman itse, kun testaat ohjelmaasi.

sori sitä rupeaa vaan etsimään väärästä paikasta kun turhantuu siihen että toi viope valitaa jostain pienestä virheestä
niin ja testaa ohjelmat netbeans avulla mutta vaikka ne siinä toimii ei ne kelpaa aina viopeeen

Lisäys: mut joo kiitos kaikille ketkä auttoi varsinkin peran

Grez [17.05.2015 11:31:54]

#

Itse varmaan käyttäisin jotain diffisoftaa (ohjelmaa joka vertaa kahta tiedostoa ja näyttää niiden väliset erot) jos viope valittaisi erosta odotetun tulosteen ja oman ohjelmani tulosteen välillä enkä silmämääräisesti helposti huomaisi eroa.

kayttaja-12707 [18.05.2015 19:32:26]

#

miten ton tulostuksen saa tehtyä kun pitäisi tulostaa nämä kaikki
summan, erotuksen, tulon, osamäärän sekä jakojäännöksen.


Tee ohjelma, joka kysyy käyttäjältä kaksi kokonaislukua ja tulostaa lukujen summan, erotuksen, tulon, osamäärän sekä jakojäännöksen. (Ensin syötetty luku on jaettava luku.)
Esimerkkitulostus Syötä ensimmäinen kokonaisluku:66
Syötä toinen kokonaisluku:

3
66+3 = 69
66-3 = 63
66*3 = 198
66/3 = 22.0
Jakojäännös: 0

import java.util.Scanner;
public class Lasku {

  public static void main(String[] args) {

  /* määritellään muuttuja */
  int luku1,luku2;
  int summa, erotus , tulo, osamäärä,jakojäännös ;
  /* suoritetaan kysely */
  Scanner syote = new Scanner(System.in);
  System.out.println("Syötä ensimmäinen kokonaisluku:");
  luku1 = syote.nextInt();
  System.out.println("Syötä toinen kokonaisluku:");
  luku2 = syote.nextInt();
  summa = luku1+luku2;
  erotus = luku1-luku2;
  tulo = luku1*luku2;
  osamäärä =luku1/luku2;
  jakojäännös =luku1%luku2;
  System.out.println("");
  }
// tulostetaan vastaus
System.out.println("Jakojäännös on: "+ jakojäännös +"");
//syote.close();
  }

Lisäys:

sori väärä koodi versio tuli

import java.util.Scanner;
public class Lasku {

  public static void main(String[] args) {

  /* määritellään muuttuja */
  int luku1,luku2;
  int summa, erotus , tulo, osamäärä,jakojäännös ;
  /* suoritetaan kysely */
  Scanner syote = new Scanner(System.in);
  System.out.println("Syötä ensimmäinen kokonaisluku:");
  luku1 = syote.nextInt();
  System.out.println("Syötä toinen kokonaisluku:");
  luku2 = syote.nextInt();
  summa = luku1+luku2;
  erotus = luku1-luku2;
  tulo = luku1*luku2;
  osamäärä =luku1/luku2;
  jakojäännös =luku1%luku2;
 System.out.println("Jakojäännös on: "+ jakojäännös +"");
  }
// tulostetaan vastaus

//syote.close();
  }

Lisäys:

pitääkö noiden kaikien perään laitaa oma tulostus vai miten
tämä pitäisi tehdä?

Lisäys: vai pitääkö tähän tehdä if else rakenne ?

Lisäys: niin ja pääsin viopessa monta tehtävää eteenpäin mutta tässä tehtävässä tulee taas vähän seinä vastaan sanoin tän ennen kun joku rupeaa valitaa

Grez [18.05.2015 19:49:16]

#

kayttaja-12707 kirjoitti:

pitääkö noiden kaikien perään laitaa oma tulostus vai miten
tämä pitäisi tehdä?

Juu

kayttaja-12707 kirjoitti:

vai pitääkö tähän tehdä if else rakenne ?

Ei nähdäkseni.

Olennaistahan on että mitä ohjelmasi tulostaa. Tällä hetkellä se tulostaa

Syötä ensimmäinen kokonaisluku:
Syötä toinen kokonaisluku:
Jakojäännös: 0

Kun pitäisi tulostaa:

Syötä ensimmäinen kokonaisluku:
Syötä toinen kokonaisluku:
66+3 = 69
66-3 = 63
66*3 = 198
66/3 = 22.0
Jakojäännös: 0

Minun mielestäni oikean ja väärän tulosteen ero on tuossa aika itsestäänselvä.

kayttaja-12707 [18.05.2015 20:30:59]

#

niin kyllä tajuan sen että se ettei se nyt tulosta oikein

Metabolix [18.05.2015 20:47:05]

#

Ongelma: ohjelman pitäisi tulostaa 66+3 = 69, missä 66 on luku1, 3 on luku2 ja 69 on summa.

Ratkaisu: lisää ohjelmaan rivi, joka tulostaa tämän.

Jos näillä tiedoilla et saa koodia korjattua, ajattelussasi on kyllä jotain todella kummallista. Mistä ihmeestä ylipäänsä tuli mieleesi tuo if-else-rakenne?

kayttaja-12707 [18.05.2015 20:47:11]

#

joo nyt aukesi:D
oli aika nollon helppoa mutta miten ne saa vielä tämän tyyliseksi
ettei tulosta niitä siis tähän tyyliin kun nyt tekee 66+3 = 69
66-3 = 63
vaan näin
66+3 = 69
66-3 = 63
66*3 = 198
66/3 = 22.0
miten se tehdää?
Syötä ensimmäinen kokonaisluku:
Syötä toinen kokonaisluku:
66+3 = 69
66-3 = 63
66*3 = 198
66/3 = 22.0
Jakojäännös: 0

import java.util.Scanner;
public class Lasku {

  public static void main(String[] args) {

  /* määritellään muuttuja */
  int luku1,luku2;
  int summa, erotus , tulo, osamäärä,jakojäännös ;
  /* suoritetaan kysely */
  Scanner syote = new Scanner(System.in);
  System.out.println("Syötä ensimmäinen kokonaisluku:");
  luku1 = syote.nextInt();
  System.out.println("Syötä toinen kokonaisluku:");
  luku2 = syote.nextInt();
  summa = luku1+luku2;
  erotus = luku1-luku2;
  tulo = luku1*luku2;
  osamäärä =luku1/luku2;
  jakojäännös =luku1%luku2;
  // tulostetaan vastaus

  System.out.println("summma on  "+ summa + "tulo on" + tulo + "osamäärä on "+ osamäärä +"Jakojäännös on: "+ jakojäännös +"");
  }



  }

Lisäys:

Metabolix kirjoitti:

Ongelma: ohjelman pitäisi tulostaa 66+3 = 69, missä 66 on luku1, 3 on luku2 ja 69 on summa.

Ratkaisu: lisää ohjelmaan rivi, joka tulostaa tämän.

Jos näillä tiedoilla et saa koodia korjattua, ajattelussasi on kyllä jotain todella kummallista. Mistä ihmeestä ylipäänsä tuli mieleesi tuo if-else-rakenne?

en tiedä ajatelin tehtävää liian vaikeasti
(ihan typerästi )

Metabolix [18.05.2015 20:49:35]

#

Mietipä nyt hetki. Jos kerran koodi "summa on " + summa tuottaa tekstin "summa on 69", millaisesta koodista voisi tulla teksti "66+3 = 69"?

Ei koodaamaan voi opetella niin, että kaikkea kysyy foorumilla. Ihan itse pitää opetella.

kayttaja-12707 [18.05.2015 20:53:59]

#

mut eikö toi nyt muuten toimi oikein
ainakin netbeans antaa tulosteen

summma on 69tulo on198osamäärä on 22Jakojäännös on: 0

Lisäys: joo erotus unohtui

Lisäys: äh nyt mulle aukesi tää tehtävä :D

kayttaja-12707 [19.05.2015 09:16:08]

#

viope ongelma

import java.util.Scanner;
public class Lasku {

  public static void main(String[] args) {

  /* määritellään muuttuja */
  int luku1,luku2;
  int summa, erotus , tulo, osamäärä,jakojäännös ;
  /* suoritetaan kysely */
  Scanner syote = new Scanner(System.in);
  System.out.println("Syötä ensimmäinen kokonaisluku:");
  luku1 = syote.nextInt();
  System.out.println("Syötä toinen kokonaisluku:");
  luku2 = syote.nextInt();
  summa = luku1+luku2;
    System.out.println (luku1 + " + " + luku2 + " = " + summa);
  erotus = luku1-luku2;
   System.out.println (luku1 + " - " + luku2 + " = " + erotus);
  tulo = luku1*luku2;
   System.out.println (luku1 + " * " + luku2 + " = " + tulo);
  osamäärä =luku1/luku2;
   System.out.println (luku1 + " / " + luku2 + " = " + osamäärä);
  jakojäännös =luku1%luku2;
   System.out.println ("jakojäännös:   " + jakojäännös);


  }



  }

Lisäys:

OHJELMASI EI TOIMI OIKEIN
Ohjelmasi tulosti seuraavasti:

Syötä ensimmäinen kokonaisluku:
66
Syötä toinen kokonaisluku:
3
66 + 3 = 69
66 - 3 = 63
66 * 3 = 198
66 / 3 = 22
jakojäännös: 0


Ohjelman olisi pitänyt tulostaa näin:

Syötä ensimmäinen kokonaisluku:66
Syötä toinen kokonaisluku:
3
66+3 = 69
66-3 = 63
66*3 = 198
66/3 = 22.0
Jakojäännös: 0

Valkoinen alue kertoo mihin asti ohjelmasi tulosti oikein.
:lla kuvataan rivinvaihtoa
Tulosteiden vertailussa ei huomioida eroja, jotka johtuvat rivinvaihdoista (\n), tabulaattori-merkeistä (\t), välilyönneistä tai isoista ja pienistä kirjaimista.

TapaniS [19.05.2015 09:19:46]

#

Sulla on liikaa välilyöntejä tai sitten puuttuu desimaali ...

Alku aina hankalaa, lopussa tietokannatkin avautuu ...

kayttaja-12707 [19.05.2015 09:34:22]

#

66/3 = 22.0
miten tähän saan vaan ton desimaalin?
koska ei noita kaikia voi muuttaa double tyypeiksi
jos se edes on tosta kiinni

Lisäys: tajusin jo

TapaniS [20.05.2015 11:58:53]

#

Miten ratkaisit?

Grez [20.05.2015 12:41:53]

#

varmaankin:
double osamäärä = (double)luku1 / luku2;

TapaniS [20.05.2015 13:06:32]

#

No joo - ajattelin, ettei nyt tulisi ainakaan mitään tämmöistä ...

System.out.println (luku1 + "/" + luku2 + " = " + osamäärä + ".0");

Grez [20.05.2015 16:03:48]

#

No, saattaa siellä olla joku peruskämmi kuten

double osamäärä = luku1 / luku2;

Joka käsittääkseni* käytännössä tuottaisi saman tuloksen kuin tuo esimerkkisi.

* en koodaile Javalla enkä jaksa testata :D

TapaniS [20.05.2015 17:09:40]

#

No ei, kyllä se taisi nyt onnistua ihan oikein. Ratkais(t)u täällä.

Rekisteröityminen [18.06.2015 11:08:35]

#

Lainaan ketjua kun itsekin teen juuri tätä Viopen Java-kurssia. Ongelmia on ollut, mutta yksi tehtävä on ollut mahdoton. Saan kaikilla tavoilla tehtävässä 9.4 virheilmoituksen:

"Et voi käyttää ei-staattista muuttujaa this staattisessa yhteydessä"

tässä minun koodi:

class Koira {

	int ika;
	String nimi,rotu,aani;

	public Koira(){
		ika=0;
		rotu=null;
		nimi=null;
		aani=null;
	}

	public Koira (int ika,String nimi, String rotu, String aani){
	this.ika = ika;
	this.nimi = nimi;
	this.rotu = rotu;
	this.aani = aani;
	}

	public void tulosta_tiedot(){
	System.out.println("Ikä: " + ika + "Nimi: " + nimi + "Rotu: " + rotu);
	}

	public String annaAani(){
	return this.aani;
	}
}

public class KoiranTesti {
	public static void main(String[] args) {
		Koira rekku = new Koira (2,"Rekku","Dalmatialainen","Hau!!!");
		System.out.println("Koiran tiedot: ");
		rekku.tulosta_tiedot();
		System.out.println("\nKoira sanoo: " +rekku.annaAani());
		}
}

kokeilin myös näitä netistä löytyneitä versioita, sama ongelma niilläkin:

http://pastebin.com/BpssX8eu
http://pastebin.com/1RJJESEB
http://pastebin.com/zcCjkiKG
http://pastebin.com/ZRZaJBEq

The Alchemist [18.06.2015 11:29:21]

#

Rekisteröityminen kirjoitti:

Lainaan ketjua kun itsekin teen juuri tätä Viopen Java-kurssia. Ongelmia on ollut, mutta yksi tehtävä on ollut mahdoton. Saan kaikilla tavoilla tehtävässä 9.4 virheilmoituksen: --

Suomi24:n postauksesi mukaan virheilmoituksia tulee tukuittain ja kaiken lisäksi tänne Putkaan olet valinnut melko satunnaisen ilmoituksen jostain sieltä välistä. Ei näin. Kaikilla virheilmoituksilla on väliä ja usein muut ovat seurausta nimenomaan siitä ensimmäisestä.

Rekisteröityminen [18.06.2015 11:35:49]

#

screenshot:

http://aijaa.com/cyrQtf

kääntäjän virheilmoitus:

KoiranTesti.java:6: Koira is already defined in unnamed package

class Koira {

^

KoiranTesti.java:36: non-static variable this cannot be referenced from a static context

		Koira rekku = new Koira (2,"Rekku","Dalmatialainen","Hau!!!");

		              ^

KoiranTesti.java:35: inner classes cannot have static declarations

	public static void main(String[] args) {

	                   ^

KoiranTesti.java:48: cannot find symbol

symbol  : constructor Koira(int,java.lang.String,java.lang.String,java.lang.String)

location: class Koira

    Koira rekku = new Koira(2, "Rekku", "Dalmatialainen", "Hau!!!");

                  ^

KoiranTesti.java:51: cannot find symbol

symbol  : method tulosta_tiedot()

location: class Koira

    rekku.tulosta_tiedot();

         ^

KoiranTesti.java:52: cannot find symbol

symbol  : method annaAani()

location: class Koira

    System.out.println("\nKoira sanoo: " +rekku.annaAani());

                                               ^

6 errors

Rekisteröityminen [18.06.2015 12:02:46]

#

Lisätään tähän vielä, että sama koodi toimii NetBeansissa. Tosin Netbeans vaatii alkuun rivin package koira; mikä taas antaa virheilmoituksen Viopessa.

Lisäys:

Rekisteröityminen kirjoitti:

Lisätään tähän vielä, että sama koodi toimii NetBeansissa. Tosin Netbeans vaatii alkuun rivin package koira; mikä taas antaa virheilmoituksen Viopessa.

hyvin menee läpi NetBeansissa. http://aijaa.com/JmND2y

TuomasK [18.06.2015 12:18:39]

#

En tiedä salliiko tuo viope sitä, mutta eihän sinulla ole tuon koodin kanssa samassa paikassa toista tiedostoa jossa on toinen Koira-luokka?

Rekisteröityminen [18.06.2015 12:34:05]

#

TuomasK kirjoitti:

En tiedä salliiko tuo viope sitä, mutta eihän sinulla ole tuon koodin kanssa samassa paikassa toista tiedostoa jossa on toinen Koira-luokka?

Siinä on ainostaan tuo yksi ikkuna johon koodin voi laittaa. Koitin poistaa koko koiran luokan, mutta sen jälkeen saan "illegal start of expression" ja "'.class' expected" virheilmoituksia.

_Pete_ [22.06.2015 12:26:52]

#

Kokeile muuttaa niin että pistät Koira luokan KoiraTesti luokan sisään ja vielä static määreellä:

class KoiraTesti {

 static class Koira {
  ....
 }

  ....

}

The Alchemist [22.06.2015 12:55:05]

#

_Pete_ kirjoitti:

Kokeile muuttaa niin että pistät Koira luokan KoiraTesti luokan sisään ja vielä static määreellä:

Ei... Noita tehtäviä ei pidä ratkaista kikkailemalla älyttömiä, koska ne on tarkoitettu java-alkeiden opiskeluun. Todennäköisesti tehtävänanto on luettu väärin ja Koira-luokka on jo olemassa tai sitten Viopessa voi peräti olla bugi. (Mikä lienee äärimmäisen epätodennäköistä, sillä Viopen ympäristöä on käyttäjätestattu vuosikaudet.)

dewabe [24.06.2015 08:59:18]

#

Olen äskettäin tehnyt kyseisen kurssin ja tarkistin juuri tehtävän annon. Huomaa kommentit ja mihin kohti Viope koodisi sijoittaa.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta