Alkjeks Skrevet 6. januar 2010 Del Skrevet 6. januar 2010 Er ny med java, og lurte på følgende: Jeg har en tabell med objekter (string-er og int-er). Hva må jeg gjøre for å flytte (kopiere) et objekt fra den tabellen til en annen tabell? Lenke til kommentar
___ Skrevet 7. januar 2010 Del Skrevet 7. januar 2010 Når du sier at du har en tabell med objekter, så aner jeg ikke hva du snakker om. Er det en tabell i en database? Er det et array eller en Collection du mener? En annen ting er at int ikke er noen objekttype. Er du sikker på at det er Java du forsøker å lære deg? Werner Lenke til kommentar
Alkjeks Skrevet 7. januar 2010 Forfatter Del Skrevet 7. januar 2010 Får prøve å ordlegge meg annerledes. Jeg har en main-klasse som jeg oppretter objekter fra en annen klasse. Objektene inneholder variablene string og int og de blir opprettet i en tabell (array of objects). Det er slik at objektene skal deles tilfeldig ut til spillere i en annen 2D-tabell. Er det da mulig å hente variablene i objektene ut fra 2D-tabellen? Det jeg kan gjøre er å opprette lokale variabler for hver variabel i objektene og bruke getters til å tilordne variablene lokalt. Men siden det skal gå an å legge til nærmest uendelig objekter til hver spiller, blir det vanskelig å opprette uendelig med variabler. Eller? Andre måter å gjøre dette på, hvis dere forstår? Mulig jeg har misforstått noe, jeg er som sagt fersk med java. Lenke til kommentar
quantum Skrevet 7. januar 2010 Del Skrevet 7. januar 2010 Får prøve å ordlegge meg annerledes. Jeg har en main-klasse som jeg oppretter objekter fra en annen klasse. Objektene inneholder variablene string og int og de blir opprettet i en tabell (array of objects). Det er slik at objektene skal deles tilfeldig ut til spillere i en annen 2D-tabell. Er det da mulig å hente variablene i objektene ut fra 2D-tabellen? Det jeg kan gjøre er å opprette lokale variabler for hver variabel i objektene og bruke getters til å tilordne variablene lokalt. Men siden det skal gå an å legge til nærmest uendelig objekter til hver spiller, blir det vanskelig å opprette uendelig med variabler. Eller? Andre måter å gjøre dette på, hvis dere forstår? Mulig jeg har misforstått noe, jeg er som sagt fersk med java. Neida, du er sikkert bare innmarig dårlig til å forklare :o) Kan du ikke poste litt av koden din så ser vi nøyaktig hva du driver med. Lenke til kommentar
Myrsnipe Skrevet 8. januar 2010 Del Skrevet 8. januar 2010 Er det en for løkke som går igjennom arrayen, eller er det noe mer avansert du er ute etter? Lenke til kommentar
___ Skrevet 8. januar 2010 Del Skrevet 8. januar 2010 Får prøve å ordlegge meg annerledes. Jeg har en main-klasse som jeg oppretter objekter fra en annen klasse. Objektene inneholder variablene string og int og de blir opprettet i en tabell (array of objects). Det er slik at objektene skal deles tilfeldig ut til spillere i en annen 2D-tabell. Er det da mulig å hente variablene i objektene ut fra 2D-tabellen? Det jeg kan gjøre er å opprette lokale variabler for hver variabel i objektene og bruke getters til å tilordne variablene lokalt. Men siden det skal gå an å legge til nærmest uendelig objekter til hver spiller, blir det vanskelig å opprette uendelig med variabler. Eller? Andre måter å gjøre dette på, hvis dere forstår? Mulig jeg har misforstått noe, jeg er som sagt fersk med java. Du ordlegger deg fortsatt fryktelig dårlig, og benytter begreper som gjør meg veldig usikker på hva du egentlig mener. Si meg, har du lært Java fra en dårlig norsk lærebok, eller bare gjør du deg vanskelig? Werner Lenke til kommentar
Myrsnipe Skrevet 8. januar 2010 Del Skrevet 8. januar 2010 (endret) Jeg tror jeg vet hva du snakker om, du skal representere et spillebrett, fks et sjakkbrett, som en 2 dimensjonal array. For å simplifisiere eksempelet antar jeg at du bruker int verdier for å representere sjakkbrikker istedenfor objekter (selv om du burde selfølgelig lage egne objekter for alle brikkene, og et for sjakkbrettet). For å kunne lete igjennom en 2 dimensjonal array trenger du en nestet for løkke. Sjekk denne siden for tips Endret 8. januar 2010 av Myrsnipe Lenke til kommentar
Alkjeks Skrevet 8. januar 2010 Forfatter Del Skrevet 8. januar 2010 Haha, er det virkelig så vanskelig å forstå når jeg bruker norske uttrykk? Jeg lærer fra forelesninger på norsk og bok på engelsk. Synes det er mye lettere å bruke norske begrep når jeg snakker/skriver norsk. Jaja, får gå over til teskje-mode: Klasse = class Objekt = object Tabell = array Tilfeldig = random (Andre du lurer på? ) Slik er det nå: Si jeg legger til mange objekter i array-en test. Stringene og int-ene i hvert objekt hører sammen (I objekt nr.1 hører Pizza og Kaffe sammen, i sammen med tallene 1, 45 og 15). En bruker skal få delt ut et tilfeldig objekt. Det skjer nedenfor ved at et tilfeldig tall blir generert og hver variabel blir hentet ut fra klassen Array og lagret lokalt i denne main-klassen. Jeg har dermed plass til 3 objekter, siden jeg bare har opprettet 3 forskjellige av hver variabel. public class ArrayTest { public static void main(String[] args) { //Oppretter objekter Array[] test = { new Array("Kaffe", "Pizza", 1, 45, 15), new Array("Te", "Pizza", 2, 60, 20), new Array("Melk", "Pizza", 3, 100, 50), new Array("Brus", "Poelse", 1, 55, 15), new Array("Vann", "Lompe", 2, 10, 40), new Array("Vann", "Ketchup", 3, 20, 10) }; //Genererer et tilfeldig tall som tilsvarer et tilfeldig objekt int random1 = (int) ((Math.random()*test.length-1)+1); System.out.println(test[random1].getDrikke()); System.out.println(test[random1].getMat()); //Oppretter feltvariabler (lokale variabler) og lagrer dataene (variablene) i objektene lokalt String drikke1, drikke2, drikke3; String mat1, mat2, mat3; int a1, a2, a3, b1, b2, b3, c1, c2, c3; drikke1 = test[random1].getDrikke(); mat1 = test[random1].getMat(); a1 = test[random1].getA(); b1 = test[random1].getB(); c1 = test[random1].getC(); Det jeg har tenkt å gjøre er heller lagre objektene i en todimensjonal tabell, slik at jeg kan ha flere brukere og lage større plass enklere. Spørsmålet er følgende: Går det an å lage en tom objekttabell, på en måte, og kopiere tilfeldige objekter inn i den? Si du lager en 4x10-tabell. Da kan fire brukere ha hver sin rad og har plass til 10 objekter. Hvis noen lurte, så er ikke dette programmet ment til å gjøre noe spesielt (f.eks. revolusjonere verden, det kommer senere), men er bare ment for personlig testing. Lenke til kommentar
DeadManWalking Skrevet 8. januar 2010 Del Skrevet 8. januar 2010 Det er ikke en fornuftig måte å gjøre det på. Så sant ikke objektene er like må du ta en titt på generics. Du kan også bare opprette arrayer av type Object, men da må du caste hver gang du skal gjøre noe med objektene. Hva skal dette brukes til? Har en følelse av at dette kan gjøres på en enklere måte, derfor lurer jeg på hva du skal bruke det til. Java er pass by reference, bruker du = blir en referanse til objektet kopiert. Ikke selv objektet. Hva går du på? Lenke til kommentar
duckers Skrevet 8. januar 2010 Del Skrevet 8. januar 2010 Tror det fornuftige er å opprette en klasse som inneholder alle variablene dine (mat, drikke, tall1, tall2, tall3). La oss kalle denne klassen Innkjop. I klassen ArrayTest benytter du java.util.ArrayList. Denne initieres med ArrayList<Innkjop> innkjopene = new ArrayList<Innkjop>(); og er en klasse som hjelper deg å holde styr på et array. Du benytter så metodene: innkjopene.add(new Innkjop(String, String, int, int, int)); //Legger til et objekt. innkjopene.get(1) //Henter element 1 for (Innkjop i : innkjopene){ //Her gjøres ting som du vil gjøre med alle elementene. } Resten finner du i APIen. Var det noe slikt du mente? Lenke til kommentar
quantum Skrevet 9. januar 2010 Del Skrevet 9. januar 2010 Spørsmålet er følgende: Går det an å lage en tom objekttabell, på en måte, og kopiere tilfeldige objekter inn i den? Det er vel jevnt over det man bruker tabeller til, rent bortsett fra at det er referanser til objekter (eller null) man stort sett snakker om i Java. Så strengt tatt kan du lage kopier av objektene (implementere clone metode) og legge referanser til kopiene i tabellen. Men siden programmet ditt er fullstendig formålsløst ville jeg tillatt meg å forenkle og rett og slett bare legge referanser til originalobjektene inn i tabellen. Du må også gå over til å bruke objekttypen Integer istedenfor den primitive typen int dersom du skal lage en tabell av objekter. Lenke til kommentar
Alkjeks Skrevet 9. januar 2010 Forfatter Del Skrevet 9. januar 2010 Jeg har gått et halvt år på dataingeniør. Kunne ingenting java før det. Takk til dere 3 siste. Hva det skal brukes til? Tja, kan lettere lage tekstbaserte spill der en kan samle items og forskjellige monstre, noe ala Pokemon eller de eldste Final Fantasy-spillene. Forresten, er det mulig å opprette f.eks. 100 int-er med navn tall1-tall100 på en raskere måte enn å skrive: int tall1, tall2...osv helt til tall100? Og går det an å lage en for-løkke der x er variabel for å legge til tall i "tallx" og dermed fylle opp alle int-ene?(Altså uten å lage en int-tabell.) Lenke til kommentar
steingrim Skrevet 9. januar 2010 Del Skrevet 9. januar 2010 Forresten, er det mulig å opprette f.eks. 100 int-er med navn tall1-tall100 på en raskere måte enn å skrive: int tall1, tall2...osv helt til tall100? Ja, bruk en array: int[] hundretall = new int[100]; for (int i = 0; i < 100; i++) { hundretall[i] = random.nextInt(); } Lenke til kommentar
quantum Skrevet 9. januar 2010 Del Skrevet 9. januar 2010 Forresten, er det mulig å opprette f.eks. 100 int-er med navn tall1-tall100 på en raskere måte enn å skrive: int tall1, tall2...osv helt til tall100? Og går det an å lage en for-løkke der x er variabel for å legge til tall i "tallx" og dermed fylle opp alle int-ene?(Altså uten å lage en int-tabell.) du kan sikkert få til noe med beanshell, javassist, bcel eller tilsvarende. but why? det er jo dette du har arrays til. Lenke til kommentar
Alkjeks Skrevet 9. januar 2010 Forfatter Del Skrevet 9. januar 2010 Vet det går an med arrays, men bare lurte på om det gikk an uten også. Lenke til kommentar
DeadManWalking Skrevet 9. januar 2010 Del Skrevet 9. januar 2010 En array er bare en datastruktur. Det som avgjør hvilken datastruktur som er optimal er avhengig av hvilken operasjoner du skal utføre på dataene. Lenke til kommentar
Myrsnipe Skrevet 10. januar 2010 Del Skrevet 10. januar 2010 Vet det går an med arrays, men bare lurte på om det gikk an uten også. Hvis jeg har fårstått deg riktig, så ønsker du en metode for å deklarere enkelt flere enkelt variabler av samme type, men økende nummer? Dette blir det veldig fort rot av. Bruk en array, eller wrap all dataen in i en egen klasse. Du burde aldri ha flere variabler en strengt talt nødvendig. Lenke til kommentar
x871kx6167ss7 Skrevet 12. januar 2010 Del Skrevet 12. januar 2010 Java er pass by reference, ... Java er pass by value. ..., bruker du = blir en referanse til objektet kopiert. Ikke selv objektet. Selv om man alltid(med unntak av int osv) sender referanser som argumenter til funksjoner, så betyr ikke det at java benytter pass by reference. <T> void swap(T a, T b) { T tmp = a; a = b; b = tmp; } Forresten, er det mulig å opprette f.eks. 100 int-er med navn tall1-tall100 på en raskere måte enn å skrive: int tall1, tall2...osv helt til tall100? Og går det an å lage en for-løkke der x er variabel for å legge til tall i "tallx" og dermed fylle opp alle int-ene?(Altså uten å lage en int-tabell.) Har du noen eksempler på hva du kunne brukt dette til? Dersom du gjør det, og aldri endrer på verdien til "tallXXX", så har du jo bare laget et nytt symbol, sånn at du kan skrive "tall54" istede for "54". Men hva tjener du på det? Men det er like vel lurt å benytte variabler for å holde på «magiske» konstanter, sånn at andre kan forstå hvorfor du har skrevet et tilfeldig tall mitt inni koden din et eller annet sted. Lenke til kommentar
quantum Skrevet 13. januar 2010 Del Skrevet 13. januar 2010 Selv om man alltid(med unntak av int osv) sender referanser som argumenter til funksjoner, så betyr ikke det at java benytter pass by reference. Det skal man huske når man kaller metoder i remote interfacer også, da får man pass by value. Lenke til kommentar
DeadManWalking Skrevet 13. januar 2010 Del Skrevet 13. januar 2010 (endret) Java er pass by reference, ... Java er pass by value. Primitive verdier er pass by value, er det et objekt så blir det by reference. Poenget her er ikke hva den virtuelle maskinen gjør og ikke gjør. Poenget er at man kan ikke bruke en int som parameter og forvente at endringene av den int'n propageres tilbake til verdien først sendt som parameter. F.eks. String strHei = "hei"; strHei == strHei er true. String strHei1 "hei"; String strHei2 "hei"; strHei1 == strHei2 er false, fordi de har ulik referanseverdi. int tallEn = 1; int tallTo = 1; tallEn==tallTo er true. Her brukes verdien og ikke referanseverdien. Dette er nok, i og med at trådstarter er ny med java. Endret 13. januar 2010 av Algific Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå