|
| HJÆLP MIG MED EN SIMPELT JAVA OPGAVE Fra : Vukovar | Vist : 658 gange 260 point Dato : 13-04-03 20:16 |
|
Hjælp mig !!!!
Min situation er, at jeg skal igennem JAVA, og derefter ALDRIG bruge det igen. Derfor vil jeg bede Jer, om hjælp til at løse denne opgave.
På forhånd tak.
DK
OPGAVEN:
-----------------------------
Du skal nu hjælpe Danmarks Radio med at udvikle et system til håndtering af pointgivningen ved melodi grandprix’et i Parken den 12. maj.
I de efterfølgende opgaver tages udgangspunkt i nedenstående skabelon. (Du behøver ikke gengive skabelonen i besvarelsen)
public class GrandPrix
{
private final int MAX_ANTAL_DELTAGERE = 30;
private int antalDeltagere;
private Land[] deltagere;
public GrandPrix()
{
deltagere = new Land[MAX_ANTAL_DELTAGERE];
antalDeltagere = 0;
}
public void tilmeldLand(String landeNavn)
{
deltagere[antalDeltagere++] = new Land(landeNavn);
}
public void tildelPoint(String landeNavn, int point)
{
// Søger landet i arrayet (deltagere) ud fra navnet
// (parameteren landeNavn), og tildeler landet point.
}
public void visStillingen()
{
// Sorterer arrayet (deltagere) faldende efter point,
// og udskriver stillingen.
}
}
Opgave 5.1: (10%)
Lav først en ny klasse Land, som kan indeholde oplysninger om et deltagende lands navn og score (point modtaget fra andre lande).
I klassen skal du definere
- en passende konstruktør,
- en metode “modtagPoint(int)”, som tæller scoren op med det modtagne antal point,
- en metode der returnerer navnet,
- en metode der returnerer scoren,
- og en toString-metode.
Opgave 5.2: (9%)
Skriv indholdet i metoden tildelPoint i klassen GrandPrix.
Opgave 5.3: (10%)
Skriv indholdet i metoden visStillingen i klassen GrandPrix.
Opgave 5.4: (6%)
Skriv en main-metode, der tilmelder 3 lande til grand prix’et, tildeler dem nogle point og viser stillingen.
| |
| Kommentar Fra : CLAN |
Dato : 14-04-03 08:27 |
| | |
| Kommentar Fra : Vukovar |
Dato : 14-04-03 09:53 |
|
tak.Søren men det var ikke det jeg har lige kigge efter.Jeg har kun haft 20 points ,men som jeg optjener mere points,vil jeg føroge antal points til en opgave løsning
| |
| Kommentar Fra : pmbruun |
Dato : 14-04-03 10:18 |
|
Mangelen på hjælp kunne også være, at der er noget umoralsk i, at du forsøger at snyde dig til en løsning.
Opgaven er himmelråbende let, hvis du overhovedet har hørt efter i timerne, og hvis du ikke har hørt efter, og ikke gider prøve, så er det vel heller ikke rimeligt, at du skal kunne fremvise et eksamensbevis, som bilder folk ind, at du har
Så løs dog din opgave selv, mand!
| |
| Kommentar Fra : Vukovar |
Dato : 14-04-03 10:33 |
|
tak for din lektion om moralen pmbruun,men du ved ikke baground om den opgave og hvad den skal bruges.Jeg har selv udvikle en java løsning men den ikke rigtig virker og så vil jeg gerne komperire med en der virker og finder fejl jeg har lavet.Hvis du har ikke noget konstruktiv at siger here ,så vil jeg forslåg dig at du tænker hvad du siger for du åbne din store mund
| |
| Kommentar Fra : pmbruun |
Dato : 14-04-03 10:59 |
|
Nåeja. Det er da fint, at du selv har prøvet. Se hvis du nu identificerer nogle konkrete problemer du har i din egen løsning, og så spørger om dem på Kandu, så kan det jo være at jeg eller en anden kan hjælpe dig med at løse dem.
Det er måden, hvor du bare beder nogen om at sende dig hele løsningen, som ikke er heldig.
Du skal også lige regne med, at jeg *ikke* er studerende, men lærer. Det der med, at du bare vil sammenligne med en løsning, der virker, og så aflevere din egen??? Skal jeg tro på den efter din indledning, hvor du udtrykkeligt skriver, at du ikke ønsker at forstå løsningen? Nej, jeg tror heller ikke på julemanden.
Så jo, jeg *har* noget konstruktivt at sige: Vis hvad du har, og hvor du har problemer. Så kan man se, om du har gjort et ærligt forsøg, og du har en rigtig god chance for at få hjælp, og oven i købet lære noget
I øvrigt kan jeg anbefale Kants Prolegomina, hvis du kunne tænke dig at lære lidt moralfilosofi, den er måske lidt svært tilgængelig i starten, men der er mange guldkorn
| |
| Kommentar Fra : Vukovar |
Dato : 15-04-03 12:25 |
|
jeg har lavet class land ;
class Land
{
private int point;
private String landeNavn;
public Land(int p,String l)
{
point = p;
landeNavn = l;
}
public int getPoint()
{
return point;
}
public String getlandeNavn()
{
return landeNavn;
}
public String toString()
{
return (point+ ","+landeNavn);
}
}
og jeg mangler ;
Opgave 5.2:
Skriv indholdet i metoden tildelPoint i klassen GrandPrix.
Opgave 5.3:
Skriv indholdet i metoden visStillingen i klassen GrandPrix.
Opgave 5.4: Skriv en main-metode, der tilmelder 3 lande til grand prix’et, tildeler dem nogle point og viser stillingen.
| |
| Kommentar Fra : pmbruun |
Dato : 15-04-03 13:24 |
|
Ser ok ud - du mangler bare modtagPoint(int p).
Du skriver, at der er noget i den løsning du *har* lavet, som ikke rigtig virker. Hvad er det?
| |
| Kommentar Fra : Vukovar |
Dato : 15-04-03 20:14 |
|
hej pmbruun.Jeg har lavet en løsning ,med den klasse land og de metoder i grand prix.Men de metoder har jeg nu skrot fordi den var ikke noget værdi .jeg fik 16 fejl når jeg prøver at kompilerer.Så jeg vil laver dem forfra.Grunden jeg var ikke intereseret i laver den var jeg går på 3 uddannelser,alle med system linie,mcse,ccna og datanom system linie.Det er en eller andet klog hoved i undervisnings minesteriet fundet på at til blive datanom linie system skal du har program konstruktion,Jeg er rigtig godt i system,har færdig it admin.udd.som andet i klasse ,og bestå alle eksamer unden problemer,men programmering er ikke mig.Jeg er ikke motiviret at lære den fordi jeg vil aldrig bruge den,og hvis den er ikke krav at jeg skal igenem den til få system linie betingelse,vil jeg aldrig gå i gang med den ,fordi vi kan ikke været bedste i alt og den er ikke mig.håber at kan nu førstå mine frustrationer med den og mangel på motivation.men tak for din hjælp
| |
| Kommentar Fra : pmbruun |
Dato : 15-04-03 21:43 |
|
Hej Vukovar,
Jeg forstår godt, hvad du siger, og det lyder lidt overdrevet at tage tre uddannelser på een gang. Måske er det bedre at tage een uddannelse ordentligt end 2 lidt på slap line eller 3 sådan lidt halvhjertet?
Nuvel. Herregud - 16 fejl fra en compiler er da ikke noget at brokke sig over. De er sikkert enkle at rette. Jeg kan godt forstå, at du bliver frustreret og skrotter det hele - men hent nu lige det program frem igen, og kig på fejlene - så kan du jo få et par hints, hvis der er nogle af dem, du ikke lige kan gennemskue.
Men start lige med at skrive "modtagPoint" - det kan ikke tage mange sekunder...
Check så lige, at Land.java kan kompilere - det kunne jo være at nogle af problemerne kom fra opsætningen?
P.S. Jeg er på påskeferie fra i morgen eftermiddag - så er jeg ikke on-line længere. Så du må hellere skynde dig...
| |
| Kommentar Fra : pmbruun |
Dato : 15-04-03 21:52 |
|
Et godt lille tip - lad være med at kalde en variabel/parameter for "l". Det kan være svært at se, om det er I eller 1 eller |.
En god standard er, at membervariable navngives med en underscore _ til sidst, altså:
class Land
{
private int point_;
private String landeNavn_;
så er de lettere at kende fra parametre og lokale variable i funktioner. Det vil nok give dig lidt "credit" at bruge den slags konventioner gennemført - også ude i den virkelige verden! Pointen er at du nu kan skrive:
public Land(int point, String landeNavn)
{
point_ = point;
landeNavn_ = landeNavn;
}
Slut med "l" som parameter. Det giver altså også velvillighed fra læreren med god orden i indrykning, blanke linier, o.s.v. Det kan lyde tosset, men hvis der er tusinder af linier kode, som skal deles mellem mange programmører, er det super vigtigt med god orden for at undgå fejl.
| |
| Kommentar Fra : Vukovar |
Dato : 16-04-03 01:36 |
|
jeg har gået tilbage til min oprendlige løsning,og nu er "kun 8" fejl tilbage,og den har jeg simple svært til at finde.
public class GrandPrix {
private class Land {
private String landNavn;
private int numberPoints = 0;
public Land(String navn) {
landNavn = navn;
}
public String getlandNavn() {
return landNavn;
}
public int getNumberPoints() {
return numberPoints;
}
public void setNumberPoints(int pts) {
numberPoints += pts;
}
public String toString(){
return landNavn + " " + numberPoints;
}
}
private final int MAX_ANTAL_DELTAGERE = 30;
private int antalDeltagere;
private Land[] deltagere;
public GrandPrix() {
deltagere = new Land[MAX_ANTAL_DELTAGERE];
antalDeltagere = 0;
}
public void tilmeldLand(String landeNavn) {
deltagere[antalDeltagere++] = new Land(landeNavn);
}
public void tildelPoint(String landeNavn, int point) {
for (int i=0; i < deltagere.length; i++){
try {
if (((Land)deltagere[i]).getLandNavn().equals(landNavn))
((Land)deltagere[i]).setNumberPoints(points);
} catch (NullPointerException npe) {}
}
}
public void tabelaPoena() {
for (int i=0; i < deltagere.length; i++){
System.out.println(deltagere[i]);
}
}
public static void main(String[] args){
GrandPrix gp = new GrandPrix();
gp.tilmeldLand("Danmark");
gp.setNumberPoints("Danmark", 7);
gp.tilmeldLand("Venecuela");
gp.setNumberPoints("Venecuela", 3);
gp.tilmeldLand("Irak");
gp.setNumberPoints("Irak", 5);
gp.tabelaPoena();
}
}
Godt Påske til pmbruun,hvis vi ikke høres i morgen.Jeg tror at jeg vil prøve at sortere tabel med selection sort,og det skulle ikke være noget problem.Det der er problematisk er at få den første del at virker.
| |
| Accepteret svar Fra : pmbruun | Modtaget 260 point Dato : 16-04-03 09:53 |
|
Her er de rene skrivefejl:
1. Java går op i store og små bogstaver, så du skal skrive getLandNavn i stedet for getlandNavn når du erklærer funktionen.
2. I funktionen tildelPoint skal du blive enig med dig selv, om parametrene skal hedde landNavn eller landeNavn, henholdsvis point eller points.
3. I main er du blevet forvirret af navnet på metoden til at tildele point. Den hedder setNumberPoints på klassen land, men på GrandPrix klassen hedder metoden tildelPoint, så det er tildelPoint, du skal kalde.
Så er der en logisk fejl:
Løkken i "tabelaPoena" (den skulle nok hedde "visStillingen") kører for langt, og udskriver en masse null værdier fra tabellen. Du skal rette den så den stopper ved det tilmeldte antalDeltagere.
Så kører det.
Jeg har et par yderligere bemærkninger til logikken, som vil trække lidt ned i bedømmelsen:
1. Det er nok meningen, i main, at alle tre lande tilmeldes først, og pointteldelingen sker bagefter. Det er sjældent, at lande tilmeldes midt under konkurrencen
2. Din brug af catch NullPointerException virker, men det er *ikke* pænt. Som i visStillingen skal du lade løkken stoppe ved antalDeltagere, så kan du fjerne den catch...
3. Du skulle nok tildele point til hvert land 2 gange - så kan man se at setNumberPoints faktisk lægger sammen. Vedlæg gerne
Så skulle du være bestået
Der er nogle stilmæssige problemer:
1. Du erklærer Land som en indre klasse til GrandPrix. I den virkelige verden bør den have sin egen fil.
2. Det vil vel ikke skade, at vedlægge en kopi af outputtet i besvarelsen, selv om der ikke er bedt om det.
3. Du bør gå op i indrykning, så man bedre kan se, hvordan tingene hænger sammen. Det vil hjælpe din lærer med at læse din besvarelse, hvis tingene står pænt - og det er aldrig godt at irritere den, som retter en opgave, gør det pænt, så bliver han/hun i godt humør og giver en bedre karakter!
4. Venezuela staves med z.
5. I den virkelige verden, havde det nok været mere heldigt med en java.util.Hashtable til at gemme stillingen. Så ville du slippe for en masse arraygymnastik for slet ikke tale om problemerne med MAX_ANTAL_DELTAGERE. Men jeg ved ikke, hvad din lærers indstilling er - det kan være han/hun har gået meget op i at undervise i brugen af arrays. Så jeg kan ikke lige gennemskue, om det ville være godt eller skidt for dig.
God påskeferie!
| |
| Godkendelse af svar Fra : Vukovar |
Dato : 16-04-03 10:57 |
| | |
| Kommentar Fra : Vukovar |
Dato : 21-04-03 00:51 |
|
så har jeg gjort den færdig;
//Import af Arrays bibliotek hvilket vil sortire en række objekater (i denne tilfalde on nummer af points)
import java.util.Arrays;
public class GrandPrix {
//invendig klasse Land implementira interfejs Comparable hvilket
//gøre muligt sortirening objekater denne klasser fra Arrays.sort() metoda
private class Land implements Comparable{
private String landeNavn;
private int Point = 0;
//konstruktor hvilket kraver lande navn for at kreirer objekcts
public Land(String navn) {
landeNavn = navn;
}
public String getlandeNavn() {
return landeNavn;
}
public int getPoint() {
return Point;
}
public void setPoint(int pts) {
Point += pts;
}
// Når der bliver implementeret Comparable interfejs der skal laves denne
//metodhe hvilket blive kald til sortning af Arrays.sort() methode
public int compareTo(Object Land) {
int pts = ((Land)Land).getPoint();
return (Point < pts ? -1 : (Point == pts ? 0 : 1));
}
//Methoda hvilke sikrer "udskrivning" af objekter
public String toString(){
return landeNavn + " " + Point;
}
}//end af indvendig klasse Land
private final int MAX_ANTAL_DELTAGERE = 30;
private int antalDeltagere;
private Land[] deltagere;
//Konstruktor klasse GrandPrix
public GrandPrix() {
deltagere = new Land[MAX_ANTAL_DELTAGERE];
}
//ved tildmeldning af land inkrementire sig og antal deltagere
public void tilmeldLand(String landeNavn) {
deltagere[antalDeltagere ++] = new Land(landeNavn);
}
//Methoder hvor vi sætter point for bestemt land
public void setPoint(String landeNavn, int poen) {
for (int i=0; i < deltagere.length; i++){
try {
if (((Land)deltagere[i]).getlandeNavn().equals(landeNavn))
((Land)deltagere[i]).setPoint(poen);
} catch (NullPointerException npe) {}
}
}
//Tabelen sortire Arrays paket med sine sort() methode in hvilket er bestemt
// fra index værdier til sortirening .
//Sortirening laves med at komperire Land med compareTo() methode
public void tabelaPoint() {
Arrays.sort(deltagere, 0, antalDeltagere);
for (int i=0; i < deltagere.length; i++){
if(deltagere[i] != null)
System.out.println(deltagere[i]);
}
}
//Method main starter når vi starter program
public static void main(String[] args){
GrandPrix gp = new GrandPrix();
gp.tilmeldLand("Danmark");
gp.setPoint("Danmark", 8);
gp.tilmeldLand("Venezuela");
gp.setPoint("Venezuela", 7);
gp.tilmeldLand("Irak");
gp.setPoint("Irak", 3);
gp.tabelaPoint();
}
}
Tak for hjælp til pmbruun
| |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|