Permalänk

Java hjälp med direkt hopp.

Hej jag har problem med en grej i java.

jag programmera lite såklart och jag behöver få så att när ett visst värde bildas så ska den direkt hoppa till ditt den satsen finns.
så oavsett om jag är i en if if if så ska den kanske hoppa ner till just den "där" satsen om värdet skapas....

förstår ni ej så säg till så får jag skriva typ en code så ni förstå....... kan ej klistra in hela source coden då detta är VÄLDIGT RÖRIGT haha. en kan göra ett mini program som vissar samma fel om ni vill.

OBS! kan ej använda method metoden för att hoppa direkt dit då det är förmånga variabler som måste följa med isåfall..... om man ej kan göra så att man kan använda variablerna i main i sin method utan att skicka med dem varje gång man anropar methoden.....

SKRIV OM NI EJ FÖRSTÅR!!!!

Permalänk
Medlem

Går det kanske att lösa med en ny klass, med en konstruktor som gör det du vill varje gång ett objekt av den klassen skapas? För att få tillgång till variabler i den nya klassen kan du skicka med en referens till "this" (det objekt som kör din programkod) som argument.

Permalänk
Skrivet av dagbro:

Går det kanske att lösa med en ny klass, med en konstruktor som gör det du vill varje gång ett objekt av den klassen skapas? För att få tillgång till variabler i den nya klassen kan du skicka med en referens till "this" (det objekt som kör din programkod) som argument.

kan du typ vissa en exempel code? jag e typ ny till java.... har bara programmerat i det i ett halvår. gärna berätta vad varje sats gör

Permalänk
Medlem

Låter som din kod behöver "städas" ordentligt. Se igenom din kod för att se om något kan skrivas om så att det är lättare att förstå.

Annars är en ganska ful lösning är att göra alla variabler globala, på det sättet kommer alla metoder i samma klass åt dem.

Permalänk
Moderator
Festpilot 2020, Antiallo

Du är nog ute efter Switch Case. Ta en kik på det. Fungerar som att när du får värdet 5 på en variabel, så genomförs den case som döpts till 5.

Det är en mer avancerad/optimerad variant av if/else satser.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Skrivet av dafuq:

Låter som din kod behöver "städas" ordentligt. Se igenom din kod för att se om något kan skrivas om så att det är lättare att förstå.

Annars är en ganska ful lösning är att göra alla variabler globala, på det sättet kommer alla metoder i samma klass åt dem.

Här är typ ett exempel där det står "//här ska den hoppa ner" ska vara en kod så den hoppar ner till det sista som är att Printa ut "Ses nästa gång".

om jag sätter in typ break; så kommer den ju hoppa på där det står "String sten = JOptionPane...." innan den väl hamnar längst ner..... och det e det jag ej vill

public class Exempel { public static void main(String [] args) { String s = JOptionPane...... Int i = Integer.parseInt(s); if(i == 0){ String namn = JOptionpane..... int namn1 = Integer.parseInt(namn); if (namn1 == 2) { fort.... } else if (namn1 == -1){ //Här ska den hoppa ner till satsen längst ner!!!! } } else { fortsättning...... } String sten = JOptionPane...... Int ingen = Integer.parseInt(sten); if(ingen == 0){ String satan = JOptionpane..... int glas = Integer.parseInt(satan); if (glas == 2) { fortsättning.... } else if (glas == -1){ fortsättning...... } } else{ fortsättning.... } System.out.println("Ses nästa gång"); } }

Permalänk
Skrivet av DavidtheDoom:

Du är nog ute efter Switch Case. Ta en kik på det. Fungerar som att när du får värdet 5 på en variabel, så genomförs den case som döpts till 5.

Det är en mer avancerad/optimerad variant av if/else satser.

Jag vet vad en Switch sats är men som du ser i mitt exempel jag posta precis så tror jag ej det fungerar

Permalänk
Moderator
Festpilot 2020, Antiallo
Skrivet av erikpetersen97:

Jag vet vad en Switch sats är men som du ser i mitt exempel jag posta precis så tror jag ej det fungerar

Inte helt koll på vad du vill ha, känns spontant som en switch case i en while sats, denna kan termineras antingen vid tillfället när du vill avbryta skiten eller när allt är färdigkört.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Medlem

Det låter som du är ute efter goto. Jag tycker dock det låter som att du bör skapa metoder/funktioner som gör en sak, du har ett block med if, else if, else, bryt ut det till en metod/funktion som returnerar success/failure exempelvis.

Nu kör jag nästan enbart C, men där gäller normalt att man använder goto för felhantering, likt om du har en funktion som gör en massa prylar typ sätter upp sockets och allokerar minne, så vill man inte behöva skriva all hantering för att avallokera minne och stänga sockets i varje möjligt utväg, utan då gör man ofta en 'goto out;' och längst ner har man 'out:' som gör allt nämnt ovan.

Visa signatur

Citera mig för svar.
Arch Linux

Permalänk
Skrivet av Dimman:

Det låter som du är ute efter goto. Jag tycker dock det låter som att du bör skapa metoder/funktioner som gör en sak, du har ett block med if, else if, else, bryt ut det till en metod/funktion som returnerar success/failure exempelvis.

Nu kör jag nästan enbart C, men där gäller normalt att man använder goto för felhantering, likt om du har en funktion som gör en massa prylar typ sätter upp sockets och allokerar minne, så vill man inte behöva skriva all hantering för att avallokera minne och stänga sockets i varje möjligt utväg, utan då gör man ofta en 'goto out;' och längst ner har man 'out:' som gör allt nämnt ovan.

Jag kan ej använda method då jag måste skicka jätte mycket info med methoden. alltså många variabler.

Permalänk
Medlem

Vilka variabler/hur många måste du skicka med vid method-androp?

Som jag förstå det vill du läsa in ett tal från användaren av programmet. Detta gör du genom att hämta en string med en metoden: JOptionPane.....
Sedan parsar du denna string till ett integer. Denna integer kan du använda i olika if satser (som du gör just nu) eller använda en switch.

Jag hade lagt all din nuvarande kod i en ny klass som jag sedan skapar i main-metoden.

public class Exempel { public static void main(String[] args) { NewClass nc = new NewClass(); }

I NewClass deklarerar du sedan alla variabler du behöver som globala.

public class NewClass { String namn; /globala variabler int namn1; public NewClass() { //sätt rätt värde till alla variabler namn = JOptionPane..... namn1 = Integer.parseIn(namn); //Klistra in resten av din kod }

I tex en av dina if satser är det inga problem att använda metodanrop

else if (namn1 == -1){ hopMethod(); }

Hoppas jag förstod problemet nogorlunda.

Permalänk
Skrivet av dafuq:

Vilka variabler/hur många måste du skicka med vid method-androp?

Som jag förstå det vill du läsa in ett tal från användaren av programmet. Detta gör du genom att hämta en string med en metoden: JOptionPane.....
Sedan parsar du denna string till ett integer. Denna integer kan du använda i olika if satser (som du gör just nu) eller använda en switch.

Jag hade lagt all din nuvarande kod i en ny klass som jag sedan skapar i main-metoden.

public class Exempel { public static void main(String[] args) { NewClass nc = new NewClass(); }

I NewClass deklarerar du sedan alla variabler du behöver som globala.

public class NewClass { String namn; /globala variabler int namn1; public NewClass() { //sätt rätt värde till alla variabler namn = JOptionPane..... namn1 = Integer.parseIn(namn); //Klistra in resten av din kod }

I tex en av dina if satser är det inga problem att använda metodanrop

else if (namn1 == -1){ hopMethod(); }

Hoppas jag förstod problemet nogorlunda.

okey jag e confused haha. Jag har bara jobbat med java i ett halv år. här kommer min kod då som jag behöver hjälp med:

public class logg{ public static void main (String [] args){ anvandare [] = {erik, bert, nisse, albert}; //dessa fält kan vara fyllda med flera då programmet registrerar nya användare också losenord [] = {abc123, banan, swag}; //dessa fält kan vara fyllda med flera då programmet registrerar nya användare också money [] = {1000, 322, 111, 10}; //dessa fält kan vara fyllda med flera då programmet registrerar nya användare också bank [] = {340, 2100, 222, 190}; //dessa fält kan vara fyllda med flera då programmet registrerar nya användare också // Här vill jag skapa en method som tar med sig alla dessa 4 fält med sig in i methoden PLUS alla deras värden!!! // i min method sen ska jag använda skriva dem till ett text dokument och sedan ska den göra System.exit(0); Alltså kommer den aldrig använda "return " kommandot!!!!! // jag kan allt förutom hur jag får med mig alla värdena in i methoden. } }

Permalänk
Medlem
Skrivet av erikpetersen97:

okey jag e confused haha. Jag har bara jobbat med java i ett halv år. här kommer min kod då som jag behöver hjälp med:

public class logg{ public static void main (String [] args){ anvandare [] = {erik, bert, nisse, albert}; //dessa fält kan vara fyllda med flera då programmet registrerar nya användare också losenord [] = {abc123, banan, swag}; //dessa fält kan vara fyllda med flera då programmet registrerar nya användare också money [] = {1000, 322, 111, 10}; //dessa fält kan vara fyllda med flera då programmet registrerar nya användare också bank [] = {340, 2100, 222, 190}; //dessa fält kan vara fyllda med flera då programmet registrerar nya användare också // Här vill jag skapa en method som tar med sig alla dessa 4 fält med sig in i methoden PLUS alla deras värden!!! // i min method sen ska jag använda skriva dem till ett text dokument och sedan ska den göra System.exit(0); Alltså kommer den aldrig använda "return " kommandot!!!!! // jag kan allt förutom hur jag får med mig alla värdena in i methoden. } }

Du har ju bara 4 variabler som du vill skicka med? anvandare, losenord, money och bank. Men som det ser ut så kanske du skulle göra dom 4 arraysen globala, så du kan nå dem i alla dina metoder.

För att svara på din fråga ang. att skicka värdena i metoden, så skickar du bara med hela arrayen, värdena följer med

Permalänk
Skrivet av BlasteRs:

Du har ju bara 4 variabler som du vill skicka med? anvandare, losenord, money och bank. Men som det ser ut så kanske du skulle göra dom 4 arraysen globala, så du kan nå dem i alla dina metoder.

För att svara på din fråga ang. att skicka värdena i metoden, så skickar du bara med hela arrayen, värdena följer med

hur skickar jag alla 4 då?
har försökt lite men får error

Permalänk
Medlem

Dina fält vill jag kalla för array/vektor haha, men menar du att du vill deklarera dina vektorer såhär?:

String[] användare = {"erik", "bert", "nisse", "albert"};

Har du deklarerat alla dina vektorer på detta sätt är det inga problem att få med dem i en metod:

public void metod(String[] anvandare,String[] losebord,String[] money,String[] bank) { //stuff }

Förövrigt bör du lagra dina strings i en ArrayList<String> eftersom du inte kan ändra längden/lägga till nya användare med de fält du har nu.

Permalänk
Skrivet av dafuq:

Dina fält vill jag kalla för array/vektor haha, men menar du att du vill deklarera dina vektorer såhär?:

String[] användare = {"erik", "bert", "nisse", "albert"};

Har du deklarerat alla dina vektorer på detta sätt är det inga problem att få med dem i en metod:

public void metod(String[] anvandare,String[] losebord,String[] money,String[] bank) { //stuff }

Förövrigt bör du lagra dina strings i en ArrayList<String> eftersom du inte kan ändra längden/lägga till nya användare med de fält du har nu.

jag har 4 fält som finns i en class.....
dessa 4 fält med alla deras värden vill jag kunna använda i en method.... hur får jag med dessa 4 fält med deras värden så jag kan använda demi min method.....

Kolla på nedan!!! detta är typ näst intill kopia på mitt prgram! MEN!!! där jag har satt * måste jag ha ett nummer annars ger den fel... men om jag ger
den ett nummer så kommer ju bara just det ordet med...... och jag vill ha med alla som finns i fältet.... det är typ enda problemmet just nu

public static void main (String [] args) throws IOException { String user[] = {erik, bert, albert, nisse}; String bank [] = {100, 200, 300, 200}; slut(user[*], bank[*]); } public static String slut(String a, String b){ //TODO }

Permalänk
Medlem

Du har dina [] på fel ställen.

Du skrev:

String user[] = {erik, bert, albert, nisse};

Dina [] ska vara precis efter String... dvs

String[] user =...;

Du ska inte ha med [] i metodanropet, det ska bara stå user och bank där.

slut(user,bank);

I din metod ska du ha med [] efter varje String.

public static String slut(String[] user, String[] bank)

I metoden kommer du då t.ex åt nisse med user[3]

Hjälpte inte detta kan jag nog tyvärr inte hjälpa mer

Permalänk
Skrivet av dafuq:

Du har dina [] på fel ställen.

Du skrev:

String user[] = {erik, bert, albert, nisse};

Dina [] ska vara precis efter String... dvs

String[] user =...;

Du ska inte ha med [] i metodanropet, det ska bara stå user och bank där.

slut(user,bank);

I din metod ska du ha med [] efter varje String.

public static String slut(String[] user, String[] bank)

I metoden kommer du då t.ex åt nisse med user[3]

Hjälpte inte detta kan jag nog tyvärr inte hjälpa mer

Det fungerade Tackar

Permalänk
Medlem

Vet inte om jag missat någonting eller liknande, men skulle absolut göra användarna till en klass, typ

Class User { String name; String password; Int money; String bank; }

Detta skulle underlätta skalbarhet och lära dig objektorienterad programmering (vilket java är speciellt byggt för).

Visa signatur

NZXT Phantom 410 (Vit) | i5 3570k@4.2GHz | Asus P8Z77-V LE | Corsair Vengeance LP 1600MHz 16GB | Gigabyte GTX 670 Windforce OC @1GHz | Seagate 600 480GB | Corsair HX750 | Cooler Master 212 Evo

Permalänk
Skrivet av Cheesier:

Vet inte om jag missat någonting eller liknande, men skulle absolut göra användarna till en klass, typ

Class User { String name; String password; Int money; String bank; }

Detta skulle underlätta skalbarhet och lära dig objektorienterad programmering (vilket java är speciellt byggt för).

okej vi har ej kommit så långt i kursen ään men det kommer säkert snart

Permalänk
Datavetare
Skrivet av dafuq:

Du har dina [] på fel ställen.

Java tillåter explicit båda varianterna, men de flesta anser nog att String[] varName; är att fördra över String varName[];

Java language specification chapter 10.2

Citat:

The [] may appear as part of the type at the beginning of the declaration, or as part of the declarator for a particular variable, or both.
For example:

byte[] rowvector, colvector, matrix[];

This declaration is equivalent to:

byte rowvector[], colvector[], matrix[][];

Skrivet av erikpetersen97:

Här är typ ett exempel där det står "//här ska den hoppa ner" ska vara en kod så den hoppar ner till det sista som är att Printa ut "Ses nästa gång".

om jag sätter in typ break; så kommer den ju hoppa på där det står "String sten = JOptionPane...." innan den väl hamnar längst ner..... och det e det jag ej vill

Som flera påpekat ska du nog fundera på att strukturera om programmet lite så du inte behöver denna typ av hopp. Rent tekniskt är det möjligt då Java har undantag (eng. exceptions) som egentligen inte är något annat än "goto" på steroider (påminner mer om setjmp/longjmp än goto i C, till och med dokumentationen för setjmp/longjmp säger: använd inte...).

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Horrible { static class Goto extends RuntimeException { Goto(String label) { super(label); } } public static void main(String[] args) throws IOException { try { BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Hit me: "); int num = Integer.parseInt(stdin.readLine()); if (num == 42) { // Kommer hoppa över utskriften av "Not the answer..." throw new Goto("done:"); } if (num == 17) { throw new Goto("someOtherLabel:"); } System.out.println("Not the answer I'm looking for!"); } catch (Goto label) { if (!label.getMessage().equals("done:")) { throw label; } } System.out.println("I'm done"); } }

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Keeper of Traditions
Skrivet av erikpetersen97:

okej vi har ej kommit så långt i kursen ään men det kommer säkert snart

Wut..?

Ni har jobbat med Java i ett halvår men inte börjat använda klasser än?

Sen kan man ju börja fundera på om man inte behöver strukturera om sin kod, istället för att börja försöka "hoppa" i koden.
Försök hålla main-metoden så "ren" och lättläst som möjligt, och gör alla krångligheter i separata funktioner istället som du bara anropar från main.

Visa signatur

|| Intel 8700K || Asus RTX 4070 TI Super TUF || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || Corsair RM 850x || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.