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!
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
kiitos tämä auttoi
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
Äkkiseltään katsottuna lopusta puuttuu }.
Asenna koneellesi Java-kehitysympäristö (esim. Eclipse tai NetBeans) ja testaa ohjelmia itse, niin saat tällaiset yksinkertaiset asiat helposti selville.
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ä...?)
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)
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
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...
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.
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?
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.
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ä.
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.
kayttaja-12707 kirjoitti:
kokeilin break tähän
Miksi ihmeessä? Mitä ongelmaa yritit ratkaista break-sanalla?
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
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);
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.
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
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.
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
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ä.
niin kyllä tajuan sen että se ettei se nyt tulosta oikein
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?
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 )
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.
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
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.
Sulla on liikaa välilyöntejä tai sitten puuttuu desimaali ...
Alku aina hankalaa, lopussa tietokannatkin avautuu ...
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
Miten ratkaisit?
varmaankin:
double osamäärä = (double)luku1 / luku2;
No joo - ajattelin, ettei nyt tulisi ainakaan mitään tämmöistä ...
System.out.println (luku1 + "/" + luku2 + " = " + osamäärä + ".0");
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
No ei, kyllä se taisi nyt onnistua ihan oikein. Ratkais(t)u täällä.
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
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ä.
screenshot:
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
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
En tiedä salliiko tuo viope sitä, mutta eihän sinulla ole tuon koodin kanssa samassa paikassa toista tiedostoa jossa on toinen Koira-luokka?
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.
Kokeile muuttaa niin että pistät Koira luokan KoiraTesti luokan sisään ja vielä static määreellä:
class KoiraTesti { static class Koira { .... } .... }
_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.)
Olen äskettäin tehnyt kyseisen kurssin ja tarkistin juuri tehtävän annon. Huomaa kommentit ja mihin kohti Viope koodisi sijoittaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.