Gå til innhold

jonny

Medlemmer
  • Innlegg

    819
  • Ble med

  • Besøkte siden sist

Hjelpsomme svar

  1. jonny's innlegg in [Løst] metode for å returnere en int-tabell med sortert indeks ble markert som svaret   
    Du kan gjøre det slik:
    1. Opprett resultattabellen slik: "int[] indeks = {0, 1, 2};"
    2. Sjekk om a[indeks[1]] < a[indeks[0]], bytt elementene 0 og 1 i indeks hvis dette er sant
    3. Sjekk om a[indeks[2]] < a[indeks[1]], bytt elementene 1 og 2 i indeks hvis dette er sant
    4 Gjenta step 2
    5. returner indeks

    Her er noe av det samme, men her returneres en array med samme lengde som input-arrayen (dette kalles forresten innsettingssortering):
    import java.util.Arrays; public class Testprogram { public static void main(String[] args) { int[] a = {9,8,7,2,7,8}; System.out.println(Arrays.toString(sortedIndexes(a))); } public static int[] sortedIndexes(int[] a) { int[] result = new int[a.length]; for (int i = 1, j = i; i < a.length; i++, j = i) { while (j > 0 && a[i] < a[result[j-1]]) result[j] = result[--j]; result[j] = i; } return result; } } Faktisk trenger du ikke gjøre noen ombyttinger i det hele tatt (noe du jo heller ikke gjør i koden din). Det holder med 2-3 sammenligninger, slik som koden under viser:
    public static int[] sortedIndexes3(int[] a) { if (a.length < 3) throw new IllegalArgumentException(); return (a[1] < a[0] ? (a[2] < a[1] ? new int[] {2, 1, 0} : (a[2] < a[0] ? new int[] {1, 2, 0} : new int[] {1, 0, 2})) : (a[2] < a[0] ? new int[] {2, 0, 1} : (a[2] < a[1] ? new int[] {0, 2, 1} : new int[] {0, 1, 2}))); }
  2. jonny's innlegg in [Løst] Trenger hjelp. Hva gjør jeg feil? ble markert som svaret   
    Grunnen til at du alltid får den utskriften, er at dette er den siste verdien du setter variablen "en" til. De 4 første "var en = ..." linjene har ikke noe å si, for den femte overskriver disse. Jeg ville fjernet variabelen "en" helt og heller brukt "document.getElementById("utskrift").innerHTML = sum + " Du er undervektig";" osv. istedenfor. if-statementene dine er også merkelige, istedenfor "!sum <= 0-19.9" mener du sikkert "sum < 20".
  3. jonny's innlegg in Kommunisere mellom klasser ble markert som svaret   
    Bruk 'Kode'-funksjonaliteten på forumet når du legger ut kode, slik at det blir lettere å lese koden din.
     
    Du må jo legge inn håndtering av at knappen 'b1' i myJPanel1 trykkes inn, typisk en 'addActionListener()' om jeg ikke husker feil. Hvis ikke du får gjøre endringer i myJPanel1, må du gjøre dette utenfor klassen (i myJPanel). Sålenge myJPanel er i samme 'package' som myJPanel1 skal dette gå greit. I konstruktøren i myJPanel kan du legge til 'p1.b1.addActionListener()' e.l. etter at 'p1' er opprettet.
  4. jonny's innlegg in Array-trøbbel ble markert som svaret   
    Jeg forstår ikke helt hva programmet ditt skal gjøre. Du skriver "programmet skal skrive MAX tilfeldige tall til en array med lengde 10, og et tall skal ikke kunne skrives ut to ganger", som ikke gir så mye mening - det er da ikke nødvendig å skrive mer enn 10 tall til array'en hvis array'en har lengde 10? Mener du egentlig at tallene som skal skrives til array'en skal ha tilfeldige verdier i området MIN til MAX? Det er slik jeg tolker at koden din forsøker å gjøre, i allefall.
     
    if-testen din nederst i setNumber() gir bare verdi til element nr. 'i' hvis verdien ikke fantes i array'en fra før, hvis den fantes hopper den bare til neste verdi i array'en. Den enkleste måten å sørge for at det blir skrevet en verdi til alle elementer i array'en er å å legge til 'else --i' etter denne if'en.
     
    Her er et forslag til hvordan oppgaven kan løses, forutsatt at jeg har forstått oppgaven riktig.
    public static boolean arrayContains(int[] array, int value) { for (int v : array) if (v == value) return true; return false; } public void fillArray() { if ((MAX - MIN + 1) < array.length) throw new IllegalStateException("(MAX-MIN+1) < array.length, impossible " + "to generate unique values for all elements in array"); int i = 0; while (i < array.length) { int v = MIN + (int)(Math.random() * (MAX - MIN + 1)); if (!arrayContains(array, v)) array[i++] = v; } }
  5. jonny's innlegg in [Løst] Razer Blackwidow 2014 ble markert som svaret   
    Personlig ser jeg ingen stor grunn til å ha bakgrunnsbelyst tastatur, særlig ikke slik knallgrønn belysning som Razers tastatur har. Bruker du tastatur en del, veit du hvor tastene er, dessuten lyser skjermen stort sett opp nok til at du lett ser tastene hvis du skulle trenge det.
  6. jonny's innlegg in Er clearos bra til mail server? ble markert som svaret   
    Jeg brukte ClearOS for noen år siden, og var meget fornøyd med det. Brukte serveren som gateway med brannmur, DHCP-server, mailserver og filserver. Nå bruker jeg Ubuntu, men det er kun som filserver og Plex-server.
  7. jonny's innlegg in [Løst] Kjøp av HK, Minne og CPU ble markert som svaret   
    Det der er 545 kr over maksimalt budsjett, i tillegg kommer fraktkostnader fra 3 forskjellige butikker...
     
    Her er et forslag med AMD-prosessor for ca. 2500 kr + frakt fra mpx.no.
     
    Edit: Glemte at du allerede hadde en grei CPU-vifte, da kan du enten spare de 150 kronene eller evt. legge litt mer penger i et annet hovedkort, selv om jeg mener det jeg valgte holder. Hvis du senere ønsker å kjøre SLI (2 skjermkort) må du nok opp i høyere pris, da du bør ha et hovedkort med minst 2xPCIe 8x, de aller fleste rimelige hovedkort (som det jeg har valgt) har 16x + 4x.
  8. jonny's innlegg in Binære søketrær og binær representasjon av treet. ble markert som svaret   
    Ja, det stemmer. Hvis du fyller inn tallene i figuren du har øverst (med røde blader), får du resultatet i figuren nedenfor. Hvis du ser litt nærmere på figuren ser du at "barna" til en bladnode med verdi B har verdien B*2 og B*2+1.
     

  9. jonny's innlegg in Player Switch i Java ble markert som svaret   
    Jeg har ikke hatt muligheter til å følge med her en stund, dessverre. Jeg tror likevel du lærer mest av å slite litt med sakene på egenhånd. Her er et forslag til hvordan koden for Harden-klassens update()-metode kan se ut:
    class Harden ... { ... public void update(GameContainer window, int delta) throws SlickException { Input input = window.getInput(); if (input.isKeyPressed(Input.KEY_S) || input.isControlPressed(4, 5)) { System.out.println("Bouncy"); Selected = false; } else if (input.isKeyPressed(Input.KEY_A) || input.isControlPressed(5, 5)) { System.out.println("Harden"); Selected = true; } if (Selected) { if (input.isKeyDown(Input.KEY_RIGHT) || input.isControllerRight(5)) { x += (.2 * delta); } if (input.isKeyDown(Input.KEY_LEFT) || input.isControllerLeft(5)) { x -= (.2 * delta); } } super.update(window, delta); } public void render(GameContainer window, Graphics g) throws SlickException { super.render(window, g); } } Jeg ville også gjort et par andre ting:
    - ikke bruk konstanter som 4 og 5 (som i isControlPressed() osv.), gi i allefall konstantene navn. Det blir mye lettere å forstå koden (4 og 5 sier meg ingenting), og du kan rette et sted hvis du skulle ha brukt feil verdier eller ønsker å bruke en annen verdi. Antagelig vil du vel også gjøre det mulig for brukeren å konfigurere hvilke taster/knotter på kontrolleren som skal brukes, så du bør finne på noe lurt her. KEY_A, KEY_S, KEY_LEFT og KEY_RIGHT bør derfor heller ikke brukes.
    - antagelig gjør du livet enklere for deg om du bestemmer hvem karakter som skal bevege seg et sted (ikke i både Harden og Bouncy, dette bør gjøres et annet sted _før_ Bouncy.update() og Hardy.update() kalles), nå ser jeg ikke bort fra at det kan forekomme at begge to blir valgt samtidig eller ingen av dem blir valgt i det hele tatt
     
    Edit: For "Harden"-koden din ovenfor ser det ut til at input.isKeyPressed(Input.KEY_A) og input.isControlPressed(4, 5) ikke stemmer overens (enten er utskriften feil, eller så er settingen av Selected feil, jeg går ut i fra det siste)...
×
×
  • Opprett ny...