Gå til innhold

Sliter med java, eksamen om 3 uker:|


Anbefalte innlegg

Heisann. Lurer på om det er en snill sjel der ute som vet om noe som kan hjelpe en gutt på 19 år som tilbringer hverdagen sin på NITH, 1 klasse med hvordan jeg skal få grepet på java. Jeg sliter litt med dysleksi og dyskalkuli, og små konsentrasjonsproblemer(Ja, vet det er litt fail å gå på sånn skole og lære java med disse mindre artige tilhengerne mine,) men greia er at jeg henger en del etter resten av klassen i java faget. Det jeg sliter med er å forstå hvordan java fungerer og hvordan man bygger opp javaprogrammer selv. Jeg kan sitte på en forelesning og skjønne det han gjør der og da, og jeg kan sitte å få hjelp og gjøre ferdig et program der og da med hjelp, men om jeg skal klare å gjøre noe selv blir det bare feil, kluss og tull, rådvill på hva man skal putte inn for å løse en oppgave. Jeg har lest i How To Program Java gjentatte ganger over nybegynner kapitlene men klarer virkelig ikke å få lyset til å gå opp for meg.

 

Jeg skjønner jo basicen med å kompilere og lage et enkelt javaprogram, men det er når man kommer til alle de forskjellige algoritmene og løkkene + arrays jeg virkelig sliter.

 

Sitter en del på Youtube(bucky) og ser på tutorials og jeg leser bok men klarer ikke å komme opp med noe som faktisk likner på en viss forståelse av faget.. og appåtil sliter jeg med å forstå det veieledere foreslår at jeg skal gjøre.

 

Noen som har råd på hvordan jeg får "lyset til å gå opp for meg" i java programering?

 

Hilsen fortvilet student :)

 

iKent

Lenke til kommentar
Videoannonse
Annonse

Den enkleste måten å lære å programmere på, er faktisk å programmere. Da skjønner du det mye lettere enn om du bare sitter og leser i en bok. Finn ut hva av pensum det er du ikke er trygg på. Så setter du deg ned og skriver noen program hvor du bruker f.eks. arrays og løkker (hvis du er usikker på hvordan de fungerer). Så bruker du heller bøker/tutorials til å slå opp i, hvis du sitter fast.

 

Håper dette hjelper, og lykke til på eksamen! :)

Lenke til kommentar

Har selv fått en grei forståelse av java dette semesteret. Måten jeg har gjort det på er å finne eksempel på nettet som jeg ikke nødvendigvis skjønner med engang, for deretter å se på hvordan det fungerer om jeg forandrer på ting, legger til ting osv. Boken vi bruker har jeg nesten ikke brukt, og mange av forelesningene har jeg hoppet over, men likevel skjønner jeg mye mer en de som bare har fulgt pensum. Men så har jeg brukt en del mer tid enn mange på innleveringene fordi jeg vil ha det så bra som mulig opp mot mitt kunnskapsnivå.

 

Annbefaler hyppig bruk av internett. Står veldig mye nyttig her: http://mindprod.com/jgloss/jgloss.html

Lenke til kommentar

Jobber du mye alene eller med andre? Jeg går i samme klasse som deg, og jeg skal ikke si at jeg er verdensmester, men jeg jobber sammen med noen andre og det har jeg lært mye av.

 

Ellers kan jeg nevne at foreleser av og til er ganske håpløs på å formulere oppgaver. Vet at flere i klassen sliter med det :) Begynn med de første ukene, og jobb deg fremover. Spør på både forumet her, og på it's learning. Da kan det være at du etterhvert forstår litt mer enn du gjør i dag ;)

Lenke til kommentar

Må si tipsene som allerede har blitt gitt her er veldig bra!

Kan legge til at du kan spørre lærer i eller etter forelesningene, samt rektor for å få veiledning og tips hvordan du kan komme deg videre. Du kan også forklare veilederne hva du føler du har problemer med og hva du klarer, så kan de lage små oppgaver for deg som kan hjelpe deg å komme et steg videre. De har jo vært gjennom faget selv og klarer ofte lett å kjenne igjen hvilke problemer de selv møtte på i den situasjonen, og hva som hjalp dem til å forstå det.

 

I tillegg anbefaler jeg at du møter opp på ekstraforelesningene på fredager og spør flittig om alt du lurer på. Husk at hvis én person tør å spørre finnes det sikkert 20 som lurer på det samme, samt at alle andre setter pris på å få repertert stoffet før eksamen :)

Lenke til kommentar

Ja, skal nok på forelesningene. Sitter som regel å prøver å lese sammen med andre men det ender mer eller mindre alltid opp med at det bare blir tulling og aldri no seriøs javajobbing. og om vi faktisk jobber med java så blir det alltid til at jeg bare får beskjed om hva jeg skal skrive inn, og om jeg spørr hvorfor jeg skal skrive inn det så er det bare : "fordi det er sånn det er" :p

 

Blir nok bra når Stian tar over på fredager og utvider og setter ting som er problemer for oss i fokus i stedet for å kun gå igjennom det som skjedde på tirsdagene :)

 

Skal prøve meg frem i dag med litt eldre oppgaver og se om jeg klarer litt :)

Lenke til kommentar

BTW: noen som klarer å forklare meg Arrays? :( Jeg har googla tutorials i hele dag og skjønner om ikke annet nesten mindre ... Sliter med å forstå hva det gjør, hvorfor det er sånn og hvordan man legger det inn. Skal jo lage det skattekartet på innleveringsoppgaven, og alle tallene skal være en posisjon der en "spiller" kan se hva som er under den posisjonen. Altså skatten.. Vanskelig å forklare uten å legge ut hele teksten men det skal kunne koples mot en tastaturscanner, og personen skal lete etter en skatt som ligger under en av "o"ene i den todimensjonale arrayen.

 

Noen som klarer å forklare?

Lenke til kommentar

Arrays er ikke noe hokus pokus i det heletatt, det vanskelige er å vite hvordan man kan bruke dem til å representere komplekse problemstillinger når man skal løse oppgaver. Må si jeg er litt usikker på hvor det butter for deg, og jeg tviler vel egentlig på at jeg klarer å forklare noe som helst på en bedre måte enn det er gjort i de tutorials du har lest allerede. Men, kan jo prøve å ta en kort intro her:

 

Tenk på et array som en tabell med så mange dimensjoner du finner praktisk. Det enkleste er kanskje en to-dimensjonal array som har rader og kolonner. Men du kan også ha én-dimensjonale arrays, som blir mer som en liste. Eller du kan ha fler dimensjoner. Har du tre dimensjoner kan du tenke på det som et regneark med rader, kolonner og "fliker", altså flere regneark oppå hverandre.

 

Cellene i et array kan inneholde primitive verdier eller referanser til objekttyper, akkurat som andre variable i java. Arrayet selv, altså strukturen som holder alle disse verdiene man lagrer i cellene, må allokeres som et objekt, med new-operatoren.

 

String telefonliste[][] = new String[100][2];

Her har du en tabell med 100 rader, og to kolonner, som f.eks. kan inneholde hhv. navn og telefonnummer (noen vil kanskje si at telefonnummer ikke bør lagres som String, men det fins andre som mener det motsatte, og det er uansett ikke viktig her);

 

Radene i tabellen er nummerert fra 0-99 (altså 100 stk) og kolonnene fra 0-1 (altså to stk.).

 

Vil du skrive ut lista, kan det gjøres med to løkker, én for hver dimensjon. Dette går jo igjen i arbeidet med arrays, skal du løpe gjennom alle verdiene må du gjøre det med et antall nestede løkker tilsvarende dimensjoner i arrayet.

 

for (int i = 0; i < 100; i++) {
  for (int j = 0; j < 2; j++) {
     System.out.print(telefonliste[i][j] + " ");
  }
  System.out.println(""); // linjeskift
}

 

Når du skal fylle array'en kan du løpe gjennom med løkker på akkurat samme måte som over, og tilordne verdier a'la telefonliste[j] = new String("Per") eller du kan initialisere dem slik idét de allokeres. Størrelsen på arrayen blir da implisitt tilsvarende antall verdier du initialiserer:

 

String telefonliste[][] = {{"Per","123234345"},{"Pål","234432234"},{"Espen","98765432"}};
System.out.println(telefonliste[1][0] + " har telefonnummer " + telefonliste[1][1]);

Her får du da sef. ut "Pål har telefonnummer 234432234".

 

De to vanligste feilene man gjør med arrays er selvfølgelig å loope gjennom i løkker som ikke stanser i tide, og man får en ArrayIndexOutOfBounds Exception. Eller man får NullpointerException når man forsøker å referere verdier i celler som inneholder null. Det vil f.eks. skje om du prøver noe slikt

 

       Integer regneark[][] = new Integer[100][2];
       Integer sum = 0;

       for (int i = 0; i < regneark.length; i++) {
           for (int j = 0; j < regneark[i].length; j++) {
               sum = sum + regneark[i][j];
           }
       }
       System.out.println(sum);

 

Dog, ovenfor har jeg brukt length for å unngå ArrayIndexOutOfBounsd exception ...

 

Det vanskelige med arrays er å bruke dem til å representere problemstillinger man ønsker å løse. Det aller enkleste eksempelet er vel kanskje et TicTacToe-spill. Her kan man tenke seg f.eks.

 

char[][] board = new char[3][3];
...
board[0][1] = 'x';
board[0][2] = 'o';
... osv.

 

Utfordringen her blir å løpe gjennom og sjekke om noen har vunnet, du kan se et eksempel her TicTacToe.

 

Som du ser er ikke løsningen helt triviell, selv om dette vel er det enkleste spillet som fins. Men bruken av arrays i løsningsalgoritmen er likevel ganske enkel å forstå.

 

Hvis det er noe mer du lurer på så foreslår jeg du spør helt konkret.

Lenke til kommentar

aha:) Takk! :D

 

Det hjalp stort:)

 

Da gjelder det bare å få gjort denne oppgaven:

 

 

 

Oppgaven handler om et enkelt skattejakt‐spill. Spillet består av et todimensjonalt rutebrett, der én av rutene inneholder en (skjult) skatt. Spillet går ut på at spilleren skal gjette hvilken rute skatten befinner seg i.

Du skal lage et program som deklarerer en to‐dimensjonal character‐array som skal representere rutebrettet. Array’en skal fylles med bokstaven ’O’, og innholdet av den skal skrives ut i konsollvinduet så spilleren kan se det.

Programmet velger ut en tilfeldig rad og kolonne som skal være skattens plassering.

Programmet skal spørre spilleren om antall rader og kolonner i spillebrettet ved starting av et nytt spill, og så lage en array på bakgrunn av dette.

Deretter skal programmet gå inn i en dialog der det ber spilleren om å gjette hvor skatten er, og spilleren svarer med et radnummer og et kolonnenummer.

Etter hver gang spilleren har gjettet, skal rutebrettet skrives ut, og ruten som spilleren gjettet på, skal nå innholde bokstaven ’X’.

Hvis spilleren ’treffer’ ruten med skatten, skal ruten markeres med en ’$’, og en gratulasjonsmelding vises.

Programmet skal fungere slik som det er vist i utskriften på neste side.

Legg merke til at radene og kolonnene i utskriften er nummerert fra og med 1, og at spilleren svarer i forhold til dette.

Spilleren får valget om å fortsette å lete hvis skatten ikke er funnet, og i tillegg muligheten til å starte helt på nytt ved å definere et nytt skattebrett.

Andre krav til programmet:

Det skal bruke boolean‐variabler i løkkekontrollene.

Det skal ha en metode fillArea som har en to‐dimensjonal character‐array og en character‐variabel som parametre, og som fyller arrayen med character‐variabelens innhold.

Det skal ha en metode printArea som har en to‐dimensjonal character‐array som parameter og som skriver ut innholdet i arrayen på en ryddig og oversiktlig måte. Utskriften skal ha angivelse av rad‐ og kolonnenummer, og den skal være passende formatert (se utskriften neste side).

Det skal ha en metode printMessage som har en String‐ og en boolean‐variabel som parametre og som skriver ut String’en med eller uten linjeskift (avhengig av om boolean‐variabelen er true eller false).

Det skal bruke printMessage‐metoden ved alle dialoger med spilleren.

Ellers gjelder samme generelle krav som ved tidligere oppgaver.

Tilleggsspørsmål: Legg til en funksjonalitet i programmet som gir spilleren et hint om hvor langt unna skatten hans/hennes tips er.

 

 

Edit: Hvilket ikke er så enkelt. Sitter å knoter med forskjellige måter å løse det på men er usikker.. får vel bare lese til jeg forstår:P Om noen har forslag til hvordan man skal gå frem for å løse den hadde det vært toppers:)

Endret av iKent
Lenke til kommentar

Jeg ville ihvertfall hatt koordinatene til skatten i to egne variabler (en for y- og en for x-akse, eller høyde og bredde om du vil). Du bør ha en hjelpemetode som skriver ut brettet og spør etter koordinater, som igjen kjøres i en while-løkke helt til spilleren har funnet skatten, og som for hvert trekk endrer den koordinaten spilleren har forsøkt til X. Siden spilleren skal ha mulighet til å starte et nytt spill etter at det forrige er over, bør kanskje while-løkken også stå i en egen hjelpemetode som trigger nytt spill.

 

Hvilken editor bruker du til å skrive i?

Lenke til kommentar

Da er det ikke rart du står litt fast :p

 

http://download.oracle.com/javase/1.4.2/docs/api/java/util/Random.html

 

hint:

int r1 = (int) (Math.random()*10);
int r2 = (int) (Math.random()*100);

gir hhv. tilfeldig tall mellom 0-10 og 0-100.

 

edit: eller er det jeg som er på bærtur? Vel, du må ihvertfall bruke Math.random()

fikset, du må selvsagt caste til int skal du ha heltall :)

 

forøvrig, hvis du er på irc så finner du meg på bl.a. #arcticgaming.no@quakenet om du skulle ha spørsmål (bare å msg hvis jeg er online), og ellers mange dyktige folk på #kodehjelp på samme nettverk

Endret av srbz
Lenke til kommentar

Jeg satt meg ned og glodde på oppgaven jeg. Foreløpig har jeg laget et spill som tar inn høyde og bredde på kartet, lager en tilfeldig plassert skatt innenfor kartet. Videre spør spillet brukeren etter nye x- og y-koordinater helt til spilleren finner skatten. Da får spilleren mulighet til å spille på nytt, om ønskelig.

 

Kildekoden tilfredsstiller foreløpig ikke alt som står under "andre krav", men det er stort sett bare finpuss som gjenstår (fordi man absolutt må ha boolske variabler osv.). Utskrift av kjøring av programmet. Har forsåvidt ikke funnet ut hvorfor siste linje kommer to ganger :\

Og for syns skyld kunne y-aksen gått nedenfra og opp på utskriften, men det går kjapt å ordne om ønskelig.

 

Imidlertid er alt av gjentagelser løst rekursivt istedenfor ved bruk av while-løkke som jeg opprinnelig foreslo, med unntak av utskrift av spillbrettet. Sleng opp koden din her når du nærmer deg ferdig, så titter vi over :)

Endret av srbz
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å
×
×
  • Opprett ny...