Visa ett resultat i en dialogruta? - java

Permalänk

Visa ett resultat i en dialogruta? - java

Jag är ny när det gäller objektorienterad programmering så det här är säkert inte alls så svårt, men jag har ändå väldigt problem med att lyckas få det rätt.
Det är som så att jag har konstruerat ett enkelt program av två klasser som slumpmässigt ska välja ut 5 kort ur en kortlek och skriva ut dessa.
Det fungerar men jag vill nu göra så att de fem korten skrivs i en dialogruta i stället för i Eclipse som jag har jobbat med.
På något sätt ska jag ju använda JOptionPane.showMessageDialog, eller hur?

Men hur kopplar jag ihop det med resultatet? Som ni märker är kunskaperna inte mycket att hurra för.

Här är de båda klasserna:

Klassen Kort:

class Kort { private static String[] valor ={"2", "3", "4", "5", "6", "7", "8", "9", "10", "Knekt", "Dam", "Kung", "Ess"}; private static String[] farg ={"Hjarter", "Spader", "Ruter", "Klover"}; private int f, v; public Kort(int farg, int valor) { if (farg < 1 || farg > 4 || valor <1 || valor > 13) { System.out.println("fel"); System.exit(1); } f = farg; v = valor; } public int getFarg() { return f; } public int getValor() { return v; } public String toString() { return farg[f - 1] + " " + valor[v - 1]; } }

Klassen Kortlek

class Kortlek { private Kort[] bunt = new Kort[52]; private int antal = 0; public int getAntal () { return antal = 5; } public void laggOverst(Kort k) { bunt[antal] = k; antal++; } public Kort geOversta() { antal--; return bunt[antal]; } public void görKortlek() { for (int f=1; f<=4; f++) for (int v=1; v<=13; v++) laggOverst(new Kort(f, v)); } public void blanda() { for (int i=0; i<antal; i++) { int n = i + (int)(Math.random() * (antal - i)); Kort temp = bunt[n]; bunt[n] = bunt[i]; bunt[i] = temp; }} public static void main( String args[]) { Kortlek kortlek = new Kortlek(); kortlek.görKortlek(); kortlek.blanda(); for(int i=0; i<5; i++) { Kort k = kortlek.geOversta(); System.out.println(k.toString()); } } }

Vad skulle ni ha gjort?

Permalänk
Medlem

Jag har lagt till tre rader kod. Börjat med att skapa en string variabel som heter korten. I for loopen så får variabeln data, och slutligen presenteras variabeln med hjälp av en showMessageDialog.

public static void main( String args[]) { Kortlek kortlek = new Kortlek(); kortlek.görKortlek(); kortlek.blanda(); //Skapar en tom variabel String korten = ""; for(int i=0; i<5; i++) { Kort k = kortlek.geOversta(); System.out.println(k.toString()); //Första kortet läggs till i variabeln, andra kortet, tredje.. korten += "\n" + k.toString(); } //Efter att fem kort har laggts till i variabeln "korten" så visas de med hjälp av showMessageDialog JOptionPane.showMessageDialog(null, korten); }

Har testat detta med resten av din kod och det har fungerat perfekt.

Permalänk

För det första: STORT tack för hjälpen!
Det uppskattas mycket.

Men jag får det ändå inte att fungera. Det är säkert något jag glömt eller gjort fel när jag har bytt ut delen jag gjorde mot din. Så här ser koden ut för tillfället. Det kommer fram ett felmeddelande ang JOptionPane där det står: JOptionPane cannot be resolved.

Jag bifogar här de uppdaterade klasserna:

Kort, samma som förut:

class Kort { private static String[] valor ={"2", "3", "4", "5", "6", "7", "8", "9", "10", "Knekt", "Dam", "Kung", "Ess"}; private static String[] farg ={"Hjarter", "Spader", "Ruter", "Klover"}; private int f, v; public Kort(int farg, int valor) { if (farg < 1 || farg > 4 || valor <1 || valor > 13) { System.out.println("fel"); System.exit(1); } f = farg; v = valor; } public int getFarg() { return f; } public int getValor() { return v; } public String toString() { return farg[f - 1] + " " + valor[v - 1]; } }

Kortlek

class Kortlek { private Kort[] bunt = new Kort[52]; private int antal = 0; public int getAntal () { return antal = 5; } public void laggOverst(Kort k) { bunt[antal] = k; antal++; } public Kort geOversta() { antal--; return bunt[antal]; } public void görKortlek() { for (int f=1; f<=4; f++) for (int v=1; v<=13; v++) laggOverst(new Kort(f, v)); } public void blanda() { for (int i=0; i<antal; i++) { int n = i + (int)(Math.random() * (antal - i)); Kort temp = bunt[n]; bunt[n] = bunt[i]; bunt[i] = temp; }} public static void main( String args[]) { Kortlek kortlek = new Kortlek(); kortlek.görKortlek(); kortlek.blanda(); //Skapar en tom variabel String korten = ""; for(int i=0; i<5; i++) { Kort k = kortlek.geOversta(); System.out.println(k.toString()); //Första kortet läggs till i variabeln, andra kortet, tredje.. korten += "\n" + k.toString(); } //Efter att fem kort har laggts till i variabeln "korten" så visas de med hjälp av showMessageDialog JOptionPane.showMessageDialog(null, korten); } }

Vad kan jag ha gjort?
Jag blir så trött på mig själv ibland.

Permalänk
Medlem

Har du importerat JOptionPane?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

Har du importerat JOptionPane?

Ja det beror på vad. Jag har ju skrivit in det i koden längst ner där som du ser. Men man kanske måste göra på något annat sätt också?

Permalänk
Medlem

Du måste säga åt kompilatorn att du vill använda klassen också. Det gör du genom att högst upp (men efter eventuella package-direktiv) i din källkod skriva:
import javax.swing.JOptionPane;

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Du måste säga åt kompilatorn att du vill använda klassen också. Det gör du genom att högst upp (men efter eventuella package-direktiv) i din källkod skriva:
import javax.swing.JOptionPane;

Kan man inte skriva import javax.swing.* för att importera hela biblioteket?

Jag kan ha fel, var ett tag sen jag pillade med java

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Skrivet av sAnden:

Kan man inte skriva import javax.swing.* för att importera hela biblioteket?

Jag kan ha fel, var ett tag sen jag pillade med java

Japp, det stämmer

Visa signatur

Anything that can go wrong will go wrong.

Permalänk

Ni ska ha stor tack för all hjälp killar!
Nu fungerar allt utmärkt.

Tack!