Permalänk
Medlem

Calling Method

Håller på med ett enkelt programm, har dock kommit till ett problem.

Jag har int pointz vilket jag vill skicka till classen Blackjack, i classen Blackjack skall den sedan kolla vilket värde pointz har och skicka tillbacka CardReturn vilket är en String.

Ex: pointz = 1 , då skall CardReturn skickas tillbacka med Stringen "Ett.JPG"

Jag försökte förstå koden på sidan: http://forums.techarena.in/software-development/1215117.htm

Så här ser min kod ut hittils(I main):

BlackCards method = new BlackCards(); methodB(CardReturn);

och i Blackjacks:

public class BlackCards{ int pointz; public void methodB(String CardReturn){ if (pointz == 1) { CardReturn = "Ess.JPG"; return CardReturn; } else if(pointz ==2){ CardReturn ="Two.JPG"; return CardReturn; } } }

Permalänk
Medlem

ah jag önskar jag kunde såna här grejer..det är var komplett meningslöst ville bara visa min avensjuka.

Visa signatur

Sweclockers.se världens bästa sida för alla sorts konspirationsteorier mot ryssar.

Permalänk
Medlem

Var ej avundsjuk, du har säkert hemliga talanger och kan säkert ta över världen genom fysiskt eller mentalt våld.
Eller så kan du ju anlita en programmera för dig.
Gör det som känns rätt. (Pick option 1! Pick it!)

Permalänk
Medlem
Skrivet av connu:

Text

public class BlackCards{ int pointz; public void methodB(String CardReturn){ if (pointz == 1) { CardReturn = "Ess.JPG"; return CardReturn; } else if(pointz ==2){ CardReturn ="Two.JPG"; return CardReturn; } } }

Ska det inte va typ
public string methodB(String CardReturn)?
Void betyder väl att du inte vill ha nåt return value?
(Va längesedan jag höll på med JAVA så lite osäker )

Permalänk
Medlem

Problemet är att jag inte vet hur jag ska skicka en Int och få tillbacka en String.
Jag är förvirrad.

Permalänk
Medlem
Skrivet av connu:

Problemet är att jag inte vet hur jag ska skicka en Int och få tillbacka en String.
Jag är förvirrad.

Pröva göra pointz till public int pointz

Permalänk
Medlem

Vill du skicka en int (pointz) till metoden methodB, är det de du menar? Och att methodB sedan retunerar en sträng?

i sånna fall borde väl något sånt här fungera:

public string methodB(int x) { if (x== 1) { CardReturn = "Ess.JPG"; return CardReturn; } else if(x ==2) { CardReturn ="Two.JPG"; return CardReturn; } else return null; Sen om du ska använda methodB så skickar du bara med pointz, methodB(pointz) }

Permalänk
Medlem

du har nog inte förstått hur det funkar med metoder än, här kommer ett exempel:
Main:

{ int points = 2; BlackCrap blackcrap= new BlackCrap(); String returnValue = blackcrap.methodName(points); }

BlackCrap

{ public String methodName(int parameter){ if(parameter == 2)return "two.crap"; return "crap.crap"; } }

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Ehm, råkade visst skriva methodB sorry.
Jag vill skicka int(pointz) till klassen Blackjack vilket sedan returnar String(CardReturn).

Permalänk
Inaktiv

EDIT: Lite efter

public string methodB(int CardReturn)

Public betyder att den är tillgänglig "överallt".
String är det du vill ha TILLBAKA från metoden (typen du skickar tillbaka med return).
(int CardReturn) är det du skickar IN till metoden, alltså en int med namnet CardReturn.

Så den korrekta metoden vill ha är:

public string methodB(int points){ if (points == 1) { return "Ess.JPG"; } else if(points ==2) { return "Two.JPG"; } }

Du skickar alltså in en integer (points) som du kör lite if satser på och returnerar sedan en sträng.

Notera även att en metod och klass inte är samma sak. Varför ha en klass med endast en metod? Du kan lika bra ha den metoden i din main klass.

Permalänk
Medlem

Så hur fångar jag up "Two.JPG" i mainen?

int points BlackCards blackcrap= new BlackCards(); String returnValue = BlackCards.methodB(points);

Har det för tillfället

Jag vill att "Two.JPG" ska fångas up i Stringen CardReturn i min Main klass.

Permalänk
Medlem
Skrivet av Gnejs:

du har nog inte förstått hur det funkar med metoder än, här kommer ett exempel:
Main:

{
int points = 2;
BlackCrap blackcrap= new BlackCrap();
String returnValue = blackcrap.methodName(points);
}

}

Gnejs skrev redan det.

Permalänk

Hade du gjort det i PHP eller javascript istället, så hade jag kunnat hjälpa dig.
Behöver det vara en desktop-applikation?

Visa signatur

Citat:
Ursprungligen inskrivet av Zaturn87
Intel konkurrerar inte längre, de dödar...

Permalänk
Medlem
Skrivet av connu:

Så hur fångar jag up "Two.JPG" i mainen?

int points BlackCards blackcrap= new BlackCards(); String returnValue = BlackCards.methodB(points);

Har det för tillfället

Jag vill att "Two.JPG" ska fångas up i Stringen CardReturn i min Main klass.

CardReturn = BlackCards.methodB(points);

Permalänk
Medlem
Skrivet av Murmeldjur:

Hade du gjort det i PHP eller javascript istället, så hade jag kunnat hjälpa dig.
Behöver det vara en desktop-applikation?

Bättre å hålla sig till riktig programmering än PHP/JS skräp

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Ja, jag hittade den i din förra DOC. , jag råkade ta bort "s"'et på en av dom och den fungerade itne.
Den klagar nu dock på:

public String methodB(int points){

Den markerar methodB(int points) och klagar på: This method most return a type of String
Ändrade därför lite i min text och har nu:

public class BlackCards{ int pointz; public String CardReturn; public String methodB(int points){ if (points == 1) { CardReturn ="Ess.JPG"; return CardReturn; } else if(points ==2) { CardReturn ="Two.JPG"; return CardReturn; } } }

Men klagar fortfarande på samma sak.

Permalänk
Inaktiv

Alltså du kan inte använda variabler utanför en metod som du gör där (då finns det ingen anledning att ha en return). Du måste säga att CardReturn i metoden ska vara en string.

public String methodB(int points){ if (points == 1) { String CardReturn ="Ess.JPG"; return CardReturn; } else if(points ==2) { String CardReturn ="Two.JPG"; return CardReturn; } }

Permalänk
Medlem

har inte orkar läsa alla svar, men du kan iaf inte ha "void" och return "string"

denna rad är fel med tanke på att du vill returna string: public void methodB(String CardReturn){

borde vara: public STRING methodB(String CardReturn){

fast STRING -> String då..

Permalänk
Medlem
Skrivet av anon150287:

Alltså du kan inte använda variabler utanför en metod som du gör där (då finns det ingen anledning att ha en return). Du måste säga att CardReturn i metoden ska vara en string.

public String methodB(int points){ if (points == 1) { String CardReturn ="Ess.JPG"; return CardReturn; } else if(points ==2) { String CardReturn ="Two.JPG"; return CardReturn; } }

Det kan han, även om han inte borde det Då det den returnerar kommer vara en referens till samma Sträng som den publika variabeln refererar till.
Däremot till problemet:
Du behöver en return efter if-satserna då det finns utfall som inte passar i någon av de två if satserna. Om du hade kollat på mitt exempel istället så hade det blivit rätt

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem
Skrivet av anon150287:

Alltså du kan inte använda variabler utanför en metod som du gör där (då finns det ingen anledning att ha en return). Du måste säga att CardReturn i metoden ska vara en string.

public String methodB(int points){ if (points == 1) { String CardReturn ="Ess.JPG"; return CardReturn; } else if(points ==2) { String CardReturn ="Two.JPG"; return CardReturn; } }

Han behöver väl inte skicka med int points om han bara har public int points?
Här är ju ett exempel på det http://docs.oracle.com/javase/tutorial/displayCode.html?code=...

Permalänk
Medlem
Skrivet av agentq15:

Han behöver väl inte skicka med int points om han bara har public int points?
Här är ju ett exempel på det http://docs.oracle.com/javase/tutorial/displayCode.html?code=...

Han ska inte ha en public int points då det är idioti att ha det
Om det var ett C program på 80-talet hade det kanske varit ok med 'globala variabler'

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Den fungerar nu, tack för all hjälp.
Undrar bara om ni vet hur man tar bort allt värde i en: points[i]
räker det med att man gör: points[i] =null; för att ta bort alla värdena?

Permalänk
Medlem

points[i] = null; sätter endast points för index i till null. Observera null ej kan användas för primitiva typer.
Om du har en array som du vill rensa är det nog lättast att ersätta den med en ny array bara.

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem
Skrivet av Gnejs:

Han ska inte ha en public int points då det är idioti att ha det
Om det var ett C program på 80-talet hade det kanske varit ok med 'globala variabler'

Är den fortfarande public när den inte ligger i main?
Eller kan man kanske köra private istället?
(Som sagt var ett tag sen sist)

Permalänk
Medlem
Skrivet av agentq15:

Är den fortfarande public när den inte ligger i main?
Eller kan man kanske köra private istället?
(Som sagt var ett tag sen sist)

Om man skall hålla sig till "reglerna" kring encapsulation så skall samtliga class medlemmer vara private såvida det inte finns väldigt bra skäl till att inte ha det. T.ex. protected vid Arv osv. Public = no no då man skall använda sig av de eventuella get/set metoderna för att manipulera värdena på ett mer kontrollerat sätt.

edit: Lite förklaring, riktigt "global variabel" blir det ju inte då den inte är static, men att sätta den till public betyder av "vem som helst" som har tillgång till ett objekt av den typen kan ändra värdet direkt. Dvs om ett blackcards objekt hade hittat sig till en annan del av applikationen, eller om en annan utvecklare använt samma klasser så hade han när som helst, var som helst kunnat komma åt pointz via objekt.pointz, och skulle t.ex. kunna säga objekt.pointz = 23487828737; sen vet man aldrig vad för kul som skulle kunna inträffa

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem
Skrivet av Gnejs:

Du behöver en return efter if-satserna då det finns utfall som inte passar i någon av de två if satserna. Om du hade kollat på mitt exempel istället så hade det blivit rätt

Jag skulle nog föredra att kasta ett exception om inget av villkoren stämmer. Det låter troligt att det normala är att något av villkoren ska stämma.

Sedan kan man ju fundera på "if - else if" vs switch vs map-datastruktur.

Permalänk
Medlem
Skrivet av Fnorken:

Jag skulle nog föredra att kasta ett exception om inget av villkoren stämmer. Det låter troligt att det normala är att något av villkoren ska stämma.

Sedan kan man ju fundera på "if - else if" vs switch vs map-datastruktur.

vs Enum då det verkar handla om spelkort (även om jag inte riktigt hänger med den mindre logiska kopplingen till "pointz").
Går ju inte att misslyckas om man måste välja Enum konstant^^ Card.ACE;
Designvalet har nog ingen större betydelse i TS lilla App iaf

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Undrar hur man kallar på en sub klass.
Denna vill jag kalla på:

public void stay(int stay1){ while(stay1==1){ System.out.println("While har startat"); if(c1>=17){ stay1=2; System.out.println("While har slutat (17)"); }else{ t.start(); System.out.println("T.start"); } } }

Permalänk
Medlem

Det där är en metod.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Det där är en metod.

Fan, menade sub metod.
Men, skulle upskatta ett svar ändå