Permalänk

Metoder i Java

hej!

Jag har problem med en uppgift som lyder:

Skriv ett program som avgör vilket av tre inmatade namn som kommer först i alfabetsordning och som skriver ut det namnet. Använd gärna någon av de standardmetoder som finns för stränghantering.

jag har gjort detta:

Men hur ska jag fortsätta? Borde jag ha string namn1 osv lr borde jag sätta char? Min motivation för string är att den "klarar fler än char".

Tacksam för hjälp.

// test
public class test
{
public static void main(String[] args)
{
System.out.print("Mata in namn 1: ");
String namn1 = Keyboard.readString();
System.out.print("Mata in namn 2: ");
String namn2 = Keyboard.readString();
System.out.print("Mata in namn 3: ");
String namn3 = Keyboard.readString();

System.out.println(minst(namn1, namn2, namn 3)
+ "är minst);"
}
static int minst(int namn1, int namn2, int namn3){
int min;
if (namn1 < namn2){
min =namn1;
}
else{
min = namn2;
}
return min;
}
}

Permalänk
Medlem

Jag är inte 100% bra på programmering då min programmeringslärare är en åsna men ska du inte döpa om dom i metoden? Så att
int minst(int namn1, int namn2, int namn3){
blir till
int minst(int namnett, int namntva, int namntre){

Och så kan du ju köra (ungefär såhär)

if (namnett < namntva<namntre){
min =namnett;
}
else if(namntre<namntva<namnett){
min = namntre;
}
else if(namntva<namntre<namnett
else
namntva
return min;
så att du kan dra in alla 3 alternativen. Else if är ju som if bara att du lägger till ett extra alternativ.
Detta är inte den exakta lösningen men typ så som jag tror det är.

Visa signatur

In the end what separates a man from a slave?
Money? Power? No... A man chooses, a slave obeys.
ASUS Z170M-PLUS || Intel Core i7 6700k @ 4,7GHz || 64GB 2133MHz Corsair RAM || MSI NVIDIA RTX 2070 Gaming Z 8GB || Bifenix Prodigy M || 2x CZ TR150 480GB RAID 0 || BeQuiet DarkRock Pro

Permalänk

Jo självklart, du har rätt. Fan vad dum jag är.

TACK!

Permalänk
Medlem

använd name1.compareTo(namn2) för att få reda på vilken som ska komma först.

Det bästa är att lägga namnen i en lista och sedan sortera med hjälp av Collections.sort (Läs JavaDoc för detaljer om hur man använder den)

Permalänk

d

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av lollol7
Jag är inte 100% bra på programmering då min programmeringslärare är en åsna men ska du inte döpa om dom i metoden?

Du behöver inte döpa om dem då metoder har sina egna variabler som inte kan kommas åt utifrån. Variabler definierade utanför metoden kan däremot kommas åt genom nyckelordet this, ifall metoden skulle definiera en variabel med samma namn.

Dvs:

class Foo { String bar = "Hello, World!"; public void print() { String bar = "Ice cream"; // metoden print() har en egen variabel med namn bar System.out.println(bar); // skriver "Ice cream" System.out.println(this.bar); // skriver "Hello, World!" } }

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Teknocide
Du behöver inte döpa om dem då metoder har sina egna variabler som inte kan kommas åt utifrån. Variabler definierade utanför metoden kan däremot kommas åt genom nyckelordet this, ifall metoden skulle definiera en variabel med samma namn.

this känns som grav överkurs i det här fallet, och hjälper ändå inte med att få fatt i variabler i andra metoder, vilket var frågan om det det här fallet.

Citat:

Ursprungligen inskrivet av forumsnörden
HUR SER DETTA UT?

För det första: Av någon anledning försöker du skicka stringvariabler till en metod som tar emot och returnerar heltal.

För det andra: Sorteringsalgoritmen du kopierade nånstansifrån passar över huvud taget inte in i ditt program, eftersom algoritmen sorterar data i en lista och det metoden ska göra bara är att hitta och returnera en sträng.

För det tredje: Jag får intrycket av att om någon gav dig lösningen på problemet i fråga vore dina kunskaper i ämnet ändå inte tillräckliga för att ta till dig och lära av det. Enda lösningen är mer läsning och/eller undervisning.

Visa signatur

Osedd trädde kung Priamos in och gick fram till Achilles
och sina armar slog om hans knän och kysste hans hårda,
mordiska händer, som hade förgjort så många hans söner.

Permalänk

Jo det stämmer, jag lånade från en bok men jag uttryckte mig kanske lite klumpigt då jag menade ifall jag skulle använda sorteringsalgoritmen över huvudtaget.
Jag vill inte ha direkta svar på uppgifter och är självklart intresserad av att lära mig annars hade jag inte valt kursen.

Dock tackar jag för hjälpen och att ni tog er tid.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Icegrin
this känns som grav överkurs i det här fallet, och hjälper ändå inte med att få fatt i variabler i andra metoder, vilket var frågan om det det här fallet.

Frågan var inte alls om att "få fatt i variabler i andra metoder". Det var ingen fråga överhuvudtaget: Någon skrev att man antagligen behöver olika namn på lokala klassvariabler och metodvariabler. Jag bedömde att detta skulle kunna verka vilseledande och passade på att ge ett litet exempel.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Teknocide
Frågan var inte alls om att "få fatt i variabler i andra metoder". Det var ingen fråga överhuvudtaget: Någon skrev att man antagligen behöver olika namn på lokala klassvariabler och metodvariabler. Jag bedömde att detta skulle kunna verka vilseledande och passade på att ge ett litet exempel.

Sant, fel uttryckt. "Frågan" var risken för "krockar" med variabelnamn i andra metoder, något man inte behöver oroa sig för.

Citat:

Ursprungligen inskrivet av forumsnörden
Jo det stämmer, jag lånade från en bok men jag uttryckte mig kanske lite klumpigt då jag menade ifall jag skulle använda sorteringsalgoritmen över huvudtaget.

För att kunna använda dig av algoritmen i fråga måste du sätta strängarna i en array och definiera hur många element som finns i den genom variabeln antal och sedan returnera det första elementet i arrayen.

Som antytts är detta dock onödigt komplicerat, lösningen är betydligt enklare än så. Bullar08:s tips om name1.compareTo(namn2) som finns "inbyggt" i alla strängar är rätt spår att gå. Allt som behövs är egentligen två anrop av den metoden, plus if-satser och något att hålla resultatet av jämförelserna i.

Att börja joddla med listor och generella sorteringsmetoder är lite överkurs än så länge.

Visa signatur

Osedd trädde kung Priamos in och gick fram till Achilles
och sina armar slog om hans knän och kysste hans hårda,
mordiska händer, som hade förgjort så många hans söner.

Permalänk

Tack! Jag löste det det för ett par dagar sen. använde if, else if satser och compareTO. Det funkade perfekt.

Permalänk
Skrivet av forumsnörden:

Tack! Jag löste det det för ett par dagar sen. använde if, else if satser och compareTO. Det funkade perfekt.

Hur löste du det? Skulle du kunna posta koden?

Permalänk
Medlem

Jag kan posta en lösning.

import java.util.*; class ... { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String first = ""; for(int i = 0; i < 3; i++) { System.out.println("Namn #"+ (i+1) + ":"); String name = sc.readLine(); if(first.compareTo(name) < 0) { first = name; } } System.out.println("Det namn som kommer först är i alfabetisk ordning är;" + first); } }

Permalänk
Medlem
Skrivet av Teknocide:

Du behöver inte döpa om dem då metoder har sina egna variabler som inte kan kommas åt utifrån. Variabler definierade utanför metoden kan däremot kommas åt genom nyckelordet this, ifall metoden skulle definiera en variabel med samma namn.

Dvs:

class Foo { String bar = "Hello, World!"; public void print() { String bar = "Ice cream"; // metoden print() har en egen variabel med namn bar System.out.println(bar); // skriver "Ice cream" System.out.println(this.bar); // skriver "Hello, World!" } }

Det är kotym att inte "dölja" instansvariabler med lokala variabler. Det gör koden mer svårläst.