Gå til innhold

trenger litt hjelp med å få programmet til å funke!


Anbefalte innlegg

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 av 13375k1133z
Lenke til kommentar
Videoannonse
Annonse

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 av miXer
Lenke til kommentar

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

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

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

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 av 13375k1133z
Lenke til kommentar

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 av greygenic
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...