13375k1133z Skrevet 11. mars 2011 Del Skrevet 11. mars 2011 (endret) Ser at jeg beskrev problemet litt vel dårlig i posten før, beklager dette. Prøver igjen: Sliter litt med et program jeg har holdt på med. Det skal gjøre følgende: - Helle over så mye som mulig fra Lastebil90 til Lastebil10. - Helle over så mye som mulig fra Lastebil10 til Lastebil50. - Helle over så mye som mulig fra Lastebil90 til Lastebil50 Det virker som det er noe gale med klient filen, de 8 siste linjene får jeg feilmeldinger på. Feilmeldingene sier: multiple markers at this line: - syntax error on token "lastebil10", variableDeclaratorID expected after this token. - syntax error on token(s), misplaced construct(s) Har prøvd å løse problemet med alternativene eclipse gir uten at problemet har blitt fikset. Håper dere kan hjelpe meg! Klient filen (har market linjene jeg får feilmelding på med fet skrift. Kan naturligvis være at problemene ligger andre steder). Takker på forhånd for hjelp! klient.java //program so laster ulike mengder mellom lastebiler import javax.swing.JOptionPane; public class LastebilKlient { public static void main(String[] args) { //oppretter tre lastebiler. Lastebil Lastebil90 = new Lastebil(90); //90 kubikk Lastebil Lastebil50 = new Lastebil (50); Lastebil Lastebil10 = new Lastebil (10); } private int kapasitet; private int mengde1; //fyller lastebil90 full med sand public int fyllFull() { int Lastebil90; return (Lastebil90 = kapasitet); } [b] Lastebil90.hellOver(Lastebil10); Lastebil10.hellOver(Lastebil50); Lastebil90.hellOver(Lastebil50); System.out.println(Lastebil90); System.out.println(Lastebil10); System.out.println(Lastebil50)[/b]; } Kildekoden til Lastebil.java public class Lastebil { private int kapasitet; private int mengde1; // konstruktør for lastebil public Lastebil (int kapasitet) { this.kapasitet = kapasitet; this.mengde1 = 0; } //returnerer lastekapasitet public int getKapasitet() { return this.kapasitet; } public int getmengde1() { return this.mengde1; } //returnerer nåværende mengde sand i lastebilen (kubikk) public int nåværendeMengdeSand() { return kapasitet - mengde1; } //fyller lastebilen full med sand public void fyllFull() { mengde1 = kapasitet; } //tømmer lastebilen for sand public void tøm() { mengde1 = 0; } //trenger jeg denne? Ser etter ledig plass public double ledigPlass() { return (kapasitet - mengde1); } public void setmengde1 (int mengde1) { { if (mengde1>kapasitet) return; else if (mengde1 <0) return; else this.mengde1 = mengde1; } } //heller over fra en lastebil til en annen (?) public void hellOver (Lastebil) { if (Lastebil.getmengde1 ==0 ) { System.out.println("Ingenting å helle over."); return; } else if ((mengde + Lastebil.getmengde1()) > getKapasitet()) { System.out.println("Avbrutt helleprosess. Ville rent over."); return; } else { System.out.println(Lastebil.getmengde1()+"liter helt over."); setmengde1(mengde1 + Lastebil.getMengde1()); Lastebil.setmengde1(0); } } public String toString() { return "Kapasitet: " + getKapasitet() + "\r\nmengde1: " + getmengde1(); } } Endret 13. mars 2011 av 13375k1133z Lenke til kommentar
miXer Skrevet 11. mars 2011 Del Skrevet 11. mars 2011 (endret) Her var det mye rar kode. Først, en konstruktør MÅ ha samme navn som navnet på klassen, altså flaske. Dersom du skal ha flere konstruktører, så MÅ disse også ha samme navn som klassen, altså flaske, men de må ha forskjellige parametere. Og du kan ikke referere til en variabel i klassen som ikke er definert. Eksempel: public class flaske { private int kapasitet; public flaske(int kapasitet) { this.kapasitet = kapasitet; //kapasitet i liter } public int getKapasitet() { return kapasitet; } } public class test { public static void main(String[] args) { flaske flaske1 = new flaske(5); flaske flaske2 = new flaske(20); System.out.println(flaske1.getKapasitet()); System.out.println(flaske2.getKapasitet()); } } Endret 11. mars 2011 av miXer Lenke til kommentar
13375k1133z Skrevet 12. mars 2011 Forfatter Del Skrevet 12. mars 2011 Takker for tilbakemelding, det funket som bare det! Et siste spørsmål: La oss si at jeg har metoden: hellOver() { }. Jeg ønsker at denne skal tømme så mye vann som mulig fra flaske over i flasken metoden brukes på. (helle innholdet fra en flaske over på den andre) f.eks: flaske1 er full og har kapasitet på 5 liter. Hell så mye som mulig over på flaske2 (denne har kapasitet på 3 liter). Lenke til kommentar
miXer Skrevet 12. mars 2011 Del Skrevet 12. mars 2011 Takker for tilbakemelding, det funket som bare det! Et siste spørsmål: La oss si at jeg har metoden: hellOver() { }. Jeg ønsker at denne skal tømme så mye vann som mulig fra flaske over i flasken metoden brukes på. (helle innholdet fra en flaske over på den andre) f.eks: flaske1 er full og har kapasitet på 5 liter. Hell så mye som mulig over på flaske2 (denne har kapasitet på 3 liter). public class Flaske { private int kapasitet; private int innhold; public Flaske(int kapasitet, int innhold) { this.kapasitet = kapasitet; this.innhold = innhold; } public int getKapasitet() { return kapasitet; } public int getInnhold() { return innhold; } public void setInnhold(int innhold) { if (innhold > kapasitet) return; else if (innhold < 0) return; else this.innhold = innhold; } public void hellOver(Flaske flaske) { if (flaske.getInnhold() == 0) { System.out.println("Ingenting å helle over."); return; } else if ((innhold + flaske.getInnhold()) > getKapasitet()) { System.out.println("Avbrutt helleprosess. Ville rent over."); return; } else { System.out.println(flaske.getInnhold() + " liter helt over."); setInnhold(innhold + flaske.getInnhold()); flaske.setInnhold(0); } } public String toString() { return "Kapasitet: " + getKapasitet() + "\r\nInnhold: " + getInnhold(); } } public class FlaskeTest { public static void main(String[] args) { Flaske flaske1 = new Flaske(5, 0); Flaske flaske2 = new Flaske(3, 1); flaske1.hellOver(flaske2); System.out.println(flaske1); System.out.println(flaske2); } } Lenke til kommentar
13375k1133z Skrevet 12. mars 2011 Forfatter Del Skrevet 12. mars 2011 Takker for god tilbakemelding! ER sånn ca ferdig med programmet no (tror jeg), det skal gjøre følgende: - Helle over så mye som mulig fra Lastebil90 til Lastebil10. - Helle over så mye som mulig fra Lastebil10 til Lastebil50. - Helle over så mye som mulig fra Lastebil90 til Lastebil50 Det virker som det er noe gale med main/klient filen, de 8 siste linjene "fungerer ikke". //program so laster ulike mengder mellom lastebiler import javax.swing.JOptionPane; public class LastebilKlient { public static void main(String[] args) { //oppretter tre lastebiler. Lastebil Lastebil90 = new Lastebil(90); //90 kubikk Lastebil Lastebil50 = new Lastebil (50); Lastebil Lastebil10 = new Lastebil (10); } private int kapasitet; private int mengde1; //fyller lastebil90 full med sand public int fyllFull() { int Lastebil90; return (Lastebil90 = kapasitet); } Lastebil90.hellOver(Lastebil10); Lastebil10.hellOver(Lastebil50); Lastebil90.hellOver(Lastebil50); System.out.println(Lastebil90); System.out.println(Lastebil10); System.out.println(Lastebil50); } Den andre filen (Lastebil) public class Lastebil { private int kapasitet; private int mengde1; // konstruktør for lastebil public Lastebil (int kapasitet) { this.kapasitet = kapasitet; this.mengde1 = 0; } //returnerer lastekapasitet public int getKapasitet() { return this.kapasitet; } public int getmengde1() { return this.mengde1; } //returnerer nåværende mengde sand i lastebilen (kubikk) public int nåværendeMengdeSand() { return kapasitet - mengde1; } //fyller lastebilen full med sand public void fyllFull() { mengde1 = kapasitet; } //tømmer lastebilen for sand public void tøm() { mengde1 = 0; } //trenger jeg denne? Ser etter ledig plass public double ledigPlass() { return (kapasitet - mengde1); } public void setmengde1 (int mengde1) { { if (mengde1>kapasitet) return; else if (mengde1 <0) return; else this.mengde1 = mengde1; } } //heller over fra en lastebil til en annen (?) public void hellOver (Lastebil) { if (Lastebil.getmengde1 ==0 ) { System.out.println("Ingenting å helle over."); return; } else if ((mengde + Lastebil.getmengde1()) > getKapasitet()) { System.out.println("Avbrutt helleprosess. Ville rent over."); return; } else { System.out.println(Lastebil.getmengde1()+"liter helt over."); setmengde1(mengde1 + Lastebil.getMengde1()); Lastebil.setmengde1(0); } } public String toString() { return "Kapasitet: " + getKapasitet() + "\r\nmengde1: " + getmengde1(); } } Lenke til kommentar
13375k1133z Skrevet 13. mars 2011 Forfatter Del Skrevet 13. mars 2011 (endret) ... Endret 14. mars 2011 av 13375k1133z Lenke til kommentar
13375k1133z Skrevet 14. mars 2011 Forfatter Del Skrevet 14. mars 2011 (endret) Har fått til å kompilere programmet, problemet er at det ikke kjører slik jeg ønsker. Programmet kjører slik no : Fyll Lastebil90 full og hell over til Lastebil10 Ingenting å helle over. Ingenting å helle over. Ingenting å helle over. Kapasitet: 90 mengde1: 0 Kapasitet: 50 mengde1: 0 Kapasitet: 10 mengde1: 0 Programmet skal gjøre følgende: Fyll Lastebil90 full med sand. (den er grei) • Hell over så mye som mulig fra Lastebil90 til Lastebil10. • Hell over så mye som mulig fra Lastebil10 til Lastebil50. • Hell over så mye som mulig fra Lastebil90 til Lastebil50 Output jeg ønsker er noe àla: Fyll Lastebil90 full og hell over til Lastebil10 Mengde sand i lastebil90: 80 Mengde sand i lastebil10: 10 Hell over fra lastebil 10 til lastebil 50 Mengde sand i lastebil 10: 0 Mengde sand i lastebil 50: 10 Hva er årsaken til dette? jeg kaller metoden hellOver, men virker som at output ignorerer dette... Er det noe gale med metoden? Håper dere kan hjelpe meg! Kildekoden er som følger: klient //program so laster ulike mengder mellom lastebiler import javax.swing.JOptionPane; public class LastebilKlient { public static void main(String[] args) { //oppretter tre lastebiler. Lastebil l90 = new Lastebil(90); //90 kubikk l90.fyllFull(); Lastebil l50 = new Lastebil (50); Lastebil l10 = new Lastebil (10); l90.hellOver(l10); l10.hellOver(l50); l90.hellOver(l50); System.out.println(l90); System.out.println(l50); System.out.println(l10); } } Og main public class Lastebil { private int kapasitet; private int mengde1; // konstruktør for lastebil public Lastebil (int kapasitet) { this.kapasitet = kapasitet; this.mengde1 = 0; } //returnerer lastekapasitet public int getKapasitet() { return this.kapasitet; } public int getmengde1() { return this.mengde1; } //returnerer nåværende mengde sand i lastebilen (kubikk) public int nåværendeMengdeSand() { return kapasitet - mengde1; } //fyller lastebilen full med sand public void fyllFull() { mengde1 = kapasitet; } //tømmer lastebilen for sand public void tøm() { mengde1 = 0; } //trenger jeg denne? Ser etter ledig plass public double ledigPlass() { return (kapasitet - mengde1); } public void setmengde1 (int mengde1) { { if (mengde1>kapasitet) return; else if (mengde1 <0) return; else this.mengde1 = mengde1; } } //heller over fra en lastebil til en annen (?) public void hellOver (Lastebil lastebil) { if (lastebil.getmengde1() ==0 ) { System.out.println("Ingenting å helle over."); return; } else if ((mengde1 + lastebil.getmengde1()) > getKapasitet()) { System.out.println("Avbrutt helleprosess. Ville rent over."); return; } else { System.out.println(lastebil.getmengde1()+"liter helt over."); setmengde1(mengde1 + lastebil.getmengde1()); lastebil.setmengde1(0); } } public String toString() { return "Kapasitet: " + getKapasitet() + "\r\nmengde1: " + getmengde1(); } } Takker på forhånd for all hjelp! Endret 14. mars 2011 av 13375k1133z Lenke til kommentar
13375k1133z Skrevet 14. mars 2011 Forfatter Del Skrevet 14. mars 2011 Betaler 50.- til den som kan hjelpe meg, som takk. (legg forøvrig merke til at jeg sliter litt med å få utskriften slik jeg ønske. Lenke til kommentar
greygenic Skrevet 14. mars 2011 Del Skrevet 14. mars 2011 (endret) public class Lastebil { private int kapasitet; private int mengde1; // konstruktør for lastebil public Lastebil (int kapasitet) { this.kapasitet = kapasitet; this.mengde1 = 0; } //returnerer lastekapasitet public int getKapasitet() { return this.kapasitet; } public int getmengde1() { return this.mengde1; } //returnerer nåværende mengde sand i lastebilen (kubikk) public int nåværendeMengdeSand() { return kapasitet - mengde1; } //fyller lastebilen full med sand public void fyllFull() { mengde1 = kapasitet; } //tømmer lastebilen for sand public void tøm() { mengde1 = 0; } //trenger jeg denne? Ser etter ledig plass public double ledigPlass() { return (kapasitet - mengde1); } public void setmengde1 (int mengde1) { { if (mengde1>kapasitet) return; else if (mengde1 <0) return; else this.mengde1 = mengde1; } } //heller over fra en lastebil til en annen (?) public void hellOver (Lastebil lastebil) { if (getmengde1() ==0 ) { System.out.println("Ingenting å helle over."); return; } else if (mengde1 > lastebil.getKapasitet()) { System.out.println("Avbrutt helleprosess. Ville rent over."); return; } else { System.out.println(getmengde1()+"liter helt over."); lastebil.setmengde1(mengde1); setmengde1(0); } } public String toString() { return "Kapasitet: " + getKapasitet() + "\r\nmengde1: " + getmengde1(); } public static void main(String[] args) { //oppretter tre lastebiler. Lastebil l90 = new Lastebil(9); //90 kubikk l90.fyllFull(); Lastebil l50 = new Lastebil (50); Lastebil l10 = new Lastebil (10); l90.hellOver(l10); l10.hellOver(l50); l90.hellOver(l50); System.out.println(l90); System.out.println(l50); System.out.println(l10); } } Du hadde noen småfeil i logikken din. Sammenlign selv, så ser du. Følgende kode over gir: "9 liter helt over" "9 liter helt over" "Ingenting å helle over" .. Endret 14. mars 2011 av greygenic Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå