04. januar 2001 - 18:11Der er
50 kommentarer og 1 løsning
array med objekter
jeg har main som indeholder array af objekter med to parametre. samlet udgift skal beregnes og det har jeg gjort ved at kalde på metoden data[i].beregnData() og det fungerer helt fint. Men jeg skal også have en metode i den samme klasse som beregnData() som finde den data som har højeste værdi...maxData(). Hvordan gør jeg det? og resultate skal jeg have udksrivet i main..hvordan kalder maxData fra main?
har glemt at skrive....når jeg kalder på data[i].beregnData() står det sådan her i main Data[] data = new Data[5]; data[0] = new Data[par 1, par 2] osv...
for (int i = 0; i < 5; i++) { System.out.print(data[i].beregnData()); }
public int findMaxData(Object[] pObj) { int max = 0; for (int i=0; i<data.length; i++) { if (data[i] > max) max = data[i]; } return max; }
.... nu ved jeg jo ikke hvad der ligger i dit object array, men hvis det er rigtige object\'er med metoder til at hente ting og sager, så husk at du skal cast\'e dem så du kan bruge dem.
I din klasse med beregnData, har du metoden findMaxData: public Data findMaxData(Data[] data) { Data resultat = data[0]; for (int i=1; i<data.length(); i++) { if (data[i].større(resultat)) { resultat = data[i]; } } return resultat; }
Klassen Data skal så have metoden boolean større(Data data), som du kan implementere så den passer til klassens data.
Eksempel: klassen Data modellerer et rektangel med data bredde og højde. Det rektangel du vil finde, er det der har det største areal. Så implementerer du større() således:
public class Data { int bredde; int højde; ... // constructor og metoder udeladt ... boolean større(Data data) { if ((this.bredde * this.højde) > (data.bredde * data.højde)) { return true; } else { return false; } } }
Du har jo næsten selv lavet det i dit for-loop, her udskriver du jo selv portoen på hver enkelt pakke. Det eneste du skal gøre så at putte det ind i en metode som tager dit array som argument.
jeg kan ikke finde ud af det.... pstric.....det kan godt være din løsning fungerer..men metoden skal ligge i samme fil som den anden metode kresten: når jeg compiler den, viser den 3-4 fejl med konverteringen
forresten....det skal helst være sådan noget kersten har lavet....med at den henter værdierne fra den anden metode som gemmes i en array og så kan jeg sagtens klare resten.... men jeg kan ikke finde ud af at hente værdierne fra den anden metode
kresten:...sorry, ved godt at det vælter ind med mails....*ss*
den har jeg ikke......men ham der har været op i den her opgave har skrevet.....at man skulle udregne samlet porto i alt, porto for en enkelt pakke, og hvilken pakke der var dyrest
sandra26>> det giver ikke megen mening, at skulle hente værdien af den dyreste pakke fra en bestemt instans af Pakker. Den kender jo ikke noget til de andre instanser.
pstric...har lige lavet det. og det virker.... double best = 0; double sum = 0; for(int i = 0; i < 5; i++) { System.out.println(\"Portoen for pakke \" + (i+1) + \" er på \" + pak[i].beregnPorto() + \"kr.\");
sum += pak[i].beregnPorto();
best = pak[0].beregnPorto(); for (int j = 0; j < pak.length; j++) { double max = pak[j].beregnPorto(); if (max > best) best = max; }
sandra26>> Jeg har tid. Det du har lavet, ser meget godt ud. Der er nu ingen grund til at lave løkken, der beregner max-portoen inde i den anden løkke. Vent lidt, så sender jeg lige et andet forslag.
der er to opgaver hvor jeg ikke kan løse sidste sprøgsmål.....den første opgave går ud på at lave en todim array med random værdier og så skal man udskrive den, udskrive samlet gennemsnit og når man har indtastet nummer på et bestemt række skal den udskrive summen for den række.....og det har jeg lavet..det hele skulle være statiske metoder
men,(det står ikke i opgaven) kan man lave en statisk metode som beregner summen af alle rækker hver for sig og udskriver dem i en endim tabel?
sandra26>> Her er en ny udgave. Jeg har omdøbt klassen Pakke til PortoBeregning. Du burde nok også omdøbe Pakker til Pakke. Klassen modellerer jo én pakke.
public static int sum (int[][] table, int r) { int sum = 0; for (int j = 0; j < table[r].length; j++)
sum = sum + table[r][j]; return sum; }
public static double average (int[][] table) { int gennemsnit = 0; int sum = 0; for (int i = 0; i<table.length; i++) { for (int j = 0; j<table[i].length; j++) sum += table[i][j];
public class Opgave2 { public static void main(String[] args) { Random generator = new Random(); final int COLUMN_WIDTH = 10;
int[][] tabel = new int[10][8]; for (int i = 0; i < tabel.length; i++) for (int j = 0; j < tabel[i].length; j++) tabel[i][j] = generator.nextInt(100); printTable(tabel, COLUMN_WIDTH);
int summer[] = new int[tabel.length]; for (int i=0; i<tabel.length; i++) { summer[i] = sum(tabel, i); } for (int i=0; i<tabel.length; i++) { System.out.print(summer[i] + \" \"); } System.out.println(); System.out.println(average(tabel));
}
public static int sum (int[][] table, int r) { int sum = 0; for (int j = 0; j < table[r].length; j++)
sum = sum + table[r][j]; return sum; }
public static double average (int[][] table) { int gennemsnit = 0; int sum = 0; for (int i = 0; i<table.length; i++) { for (int j = 0; j<table[i].length; j++) sum += table[i][j];
pstric: forresten.....Jeg har altid en masse spørgsmål... hvis jeg vil lave en brugergrænseflade til den første opgave....så man selv kan indtaste oplysningeren om pakkerne...hvad er det bedste at gøre(.lave 3 * 5 felter..for 5 pakker) eller?
En bedre løsning ville nok være, at lave en liste, hvor brugeren kan se de pakker der er indtastet. Ved at klikke på en \'Ny pakke...\' knap kunne brugeren så komme til en dialog, hvor oplysninger om en ny pakke kunne indtastes, og når brugeren trykkede på OK, skulle den nye pakke så tilføjes til listen. Et statusområde på samme vindue skulle så vise prisen på den dyreste og den samlede pris.
Men så skulle pakkerne heller ikke længere ligge i et array, men en container, der var mere velegnet til formålet.
vi er kun lige gået i gang med GUI...og det eneste vi skal kunne er at lave inputfelterne, knapper og felt hvor man kan vise resultat...men jeg ved ikke om man overhovedet kan bruge det når det er en array
nå okay... det ville aldrig lykkedes mig at få det til at virke.. i hvert fald ikke i aften... *s* tak....:-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.