Permalänk
Medlem

Hur skulle ni göra, Java?

Hej alla!

Jag har fått en uppgift att skriva ett program, där olika namn skall vara i en arraylist och där övriga variabler (både strängar och integers) skall vara "som de är". Objekten skall skapas i en annan klass än main.

Jag tänkte jag skulle fråga er som har lite erfarenhet av programmering hur ni skulle gjort här.
Vad gäller arrayen, hade ni gjort
1: ArrayList<Contructor>namn = new ArrayList<>();
2: ArrayList<String>namn = new ArrayList<String>(); (Här kan man kanske behöva skapa en extra array, tror jag)

Hade ni använt toString för att skriva ut alltsammans, eller hade ni använt något annat metodanrop?

Tack för er hjälp

Ni får gärna motivera varför ni gör det ena eller andra

Permalänk
Medlem
Skrivet av JJ72:

olika namn skall vara i en arraylist och [där] övriga variabler (både strängar och integers) skall vara "som de är". Objekten skall skapas i en annan klass än main.

Vad menar du med den här biten? Vad är "alla namn"? Vad är "övriga variabler"? Vad är något när det är "som det är"? Vad ska programmet göra?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Jo, jag ska skriva ett program som skriver ut följande:

Namn: Nisse Nilsson
Titel: Arbetsnarkoman
Personnummer: 123456-5
Lön: 40000 kr

Namn: Pelle Persson
Titel: Sopgubbe
Personnummer: 87652-34
Lön: 28000 kr

Lön tillsammans: 68000 kr

Följande måste användas:
1. Två klasser, en klass som innehåller main-metoden och en klass från vilken objekt skapas
2. En array eller ArrayList
3. Getter metoder
4. Variabler som lagrar objek

Det jag funderar över är det bästa sättet att sätta ihop arrayen/arraylistan med de övriga variablerna.

Permalänk
Medlem
Skrivet av JJ72:

Jo, jag ska skriva ett program som skriver ut följande:

Namn: Nisse Nilsson
Titel: Arbetsnarkoman
Personnummer: 123456-5
Lön: 40000 kr

Namn: Pelle Persson
Titel: Sopgubbe
Personnummer: 87652-34
Lön: 28000 kr

Lön tillsammans: 68000 kr

Följande måste användas:
1. Två klasser, en klass som innehåller main-metoden och en klass från vilken objekt skapas
2. En array eller ArrayList
3. Getter metoder
4. Variabler som lagrar objek

Det jag funderar över är det bästa sättet att sätta ihop arrayen/arraylistan med de övriga variablerna.

Först får du definiera en klass som inehåller de variabler du är ute efter för att beskriva en person och därefter har du en array som består av flera personer.

Kort exempel i nån psuedo-variant av Java:

class Person { private string name; public Person(string name) { this.name = name; } public string getName() { return this.name; } }

och i main så har du en ArrayList<Person> där du petar ner alla personer du skapat.

Visa signatur

Jag är en optimist; det är aldrig så dåligt så att det inte kan bli sämre.

Permalänk
Medlem

Jag har börjat med att skriva detta:

import java.util.ArrayList; class Dog{ public static void main(String[] args) { ArrayList<String>list = new ArrayList<>(); list.add("Nisse Nilsson"); list.add("Pelle Persson"); Cat writer1 = new Cat("Arbetsnarkoman", "645342-3", 40000); Cat writer2 = new Cat("Sopgubbe", "789674-2", 28000); for(String value : list){ System.out.println("Namn: " + value + " / " + "Titel: " + writer1.getTitle() + " / " + "Persnr: " + writer1.getDob() + " / " + "Lön: " + writer1.getPrice()); System.out.println("Namn: " + value + " / " + "Titel: " + writer2.getTitle() + " / " + "Persnr: " + writer2.getDob() + " / " + "Lön: " + writer2.getPrice()); } } }

class Cat{ private String title, dob; private int price; public Cat(String title, String dob, int price){ this.title = title; this.dob = dob; this.price = price; } public String getTitle(){ return title; } public String getDob(){ return dob; } public int getPrice(){ return price; } public String toString(){ return("Titel: " + title + "Persnr: " + dob + "Lön: " + price); } }

Det blir inte riktigt rätt, men det kan jag nog ordna till rätt lätt.
Frågan är om detta skulle vara det bästa sättet att göra en sån här uppgift på, eller har nin andra förslag?

Tack

Permalänk
Medlem
Skrivet av JJ72:

Det blir inte riktigt rätt, men det kan jag nog ordna till rätt lätt.
Frågan är om detta skulle vara det bästa sättet att göra en sån här uppgift på, eller har nin andra förslag?

Tack

Jag tycker att det är helt rätt att använda objektorientering (om det är det du syftar på). Java är ett objektorienterat språk.

Men jag måste säga att det är en bedrövlig uppgift om du tvingas göra på det där sättet. Återigen, Java är ett objektorienterat språk. Självklart är det ju din Cat-klass (bedrövligt namn på denna för övrigt! ) som ska ha namnet också. Det är en lista av Cats du ska loopa och presentera.

Varför du inte får det att fungera är ju för att du bara har en lista. Du behöver en Cat-lista och en String-lista sen gör du en indexerad for-loop och kan på så sätt iterera och presentera korrekta värden baserat på index.... Jag kan inte tänka mig att du ska göra på det där sättet enligt uppgiften? Posta gärna den ordagrant annars.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

Känns konstigt.

Jag skulle haft en klass med personinfo där jag har min konstruktor och getters.
Skapar sedan en arraylist i min main-klass där jag lagrar mina objekt och sedan printar ut dessa på det sätt som passar.

Förstår inte varför du blir tvingad till att ha två listor på det där sättet? Finns ju ingen logik i det öht.

Visa signatur

"Happiness is only real when shared"

Permalänk
Medlem
Skrivet av JJ72:

Jag har börjat med att skriva detta:

import java.util.ArrayList; class Dog{ public static void main(String[] args) { ArrayList<String>list = new ArrayList<>(); list.add("Nisse Nilsson"); list.add("Pelle Persson"); Cat writer1 = new Cat("Arbetsnarkoman", "645342-3", 40000); Cat writer2 = new Cat("Sopgubbe", "789674-2", 28000); for(String value : list){ System.out.println("Namn: " + value + " / " + "Titel: " + writer1.getTitle() + " / " + "Persnr: " + writer1.getDob() + " / " + "Lön: " + writer1.getPrice()); System.out.println("Namn: " + value + " / " + "Titel: " + writer2.getTitle() + " / " + "Persnr: " + writer2.getDob() + " / " + "Lön: " + writer2.getPrice()); } } }

class Cat{ private String title, dob; private int price; public Cat(String title, String dob, int price){ this.title = title; this.dob = dob; this.price = price; } public String getTitle(){ return title; } public String getDob(){ return dob; } public int getPrice(){ return price; } public String toString(){ return("Titel: " + title + "Persnr: " + dob + "Lön: " + price); } }

Det blir inte riktigt rätt, men det kan jag nog ordna till rätt lätt.
Frågan är om detta skulle vara det bästa sättet att göra en sån här uppgift på, eller har nin andra förslag?

Tack

Varför kalla klasserna Cat och Dog? Det är inte katter och hundar du modellerar. Rekommenderar App och Employee — det är trots allt anställda du vill representera.

Istället för att ha en separat lista med namnen bör namnet finnas tillsammans med den andra datan, dvs i Employee (som jag hädanefter kommer kalla den).

Att du har en toString på Employee är bra! Ett objekt ska inte ansvara för att skriva ut sig själva men det är praktiskt om det kan ge en grundläggande beskrivning av sig själv som en String.

Förutom den där namnlistan i App ser det bra ut. Rekommenderar även att lägga till en metod i App som summerar lönen för alla Employees i listan.

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Inte för att vara otrevlig.
Men om man kollar på din historik så har du ställt frågor här i 10 månader om programmering och dom är alla typiska skoluppgifter och den enda gången du skriver tack jag förstår är när du fått ett svar rakt av.
Senaste trådarna du har gjort har du definitivt kopierat och klistrat in från andra och sen fyllt upp. Du ber om hjälp med att skapa personer som objekt och räkna ihop deras lön, men du döper klasserna till Dog och Cat?

Försöker du ens lära dig eller sitter du bara å väntar på att folk ska ge dig svaret svart på vitt?

Permalänk
Medlem
Skrivet av for_each_while:

Inte för att vara otrevlig.
Men om man kollar på din historik så har du ställt frågor här i 10 månader om programmering och dom är alla typiska skoluppgifter och den enda gången du skriver tack jag förstår är när du fått ett svar rakt av.
Senaste trådarna du har gjort har du definitivt kopierat och klistrat in från andra och sen fyllt upp. Du ber om hjälp med att skapa personer som objekt och räkna ihop deras lön, men du döper klasserna till Dog och Cat?

Försöker du ens lära dig eller sitter du bara å väntar på att folk ska ge dig svaret svart på vitt?

Hmm...

Det där håller jag verkligen inte med om. Jag tycker jag brukar vara väldigt noga med att säga tack (läs mina inlägg igen så ser du nog), både direkt här och i direktmeddelande till vissa personer. Dig bland annat.

Du säger att jag klippt och klistrat. Måste man lösa samma problem på olika sätt varje gång? Om samma frågeställning dyker upp flera gånger, och jag har en lösning på den, varför skulle jag inte använda den? Det handlar inte om att klippa och klistra, utan att jag lärt mig hur man löser en specifik uppgift.

Anledningen till att jag frågade och att det stod cat och dog på på klasserna i den här sista (jag hade helt andra klasser från början),var för att jag bara undrade hur ni tänkte i detta fall. Jag var alltså inte intresserad av någon lösning eller någon syntax för att få det att fungera, utan mer om hur ni skulle ha angripit problemet. Jag tänkte att jag kanske kunde lära mig att "tänka rätt" om jag frågar de som kan sånt här.

Vad det gäller skoluppgifter, så visst. Vissa frågor har varit direkt från uppgifter, men i många fall har det varit från att jag själv funderat vidare utifrån skoluppgifterna. "Hur skulle man göra om man vill få det att fungera så här också/eller".

Om jag försöker lära mig?
Jag håller inte på med detta för att samla poäng till något, eller för att jag behöver det i mitt arbete. Jag gör det för min egen skull, för att jag är intresserad och vill lära mig. Tyvärr bor jag i obygden numer, så jag har ingen att prata med eller bolla idéer med. Jag går en kurs på distans där det kan ta dagar innan man får något svar överhuvudtaget. Och då kan svaret lika gärna vara "Jag vet inte". Om du upplever det jobbigt, tråkigt eller något annat sånt så behöver du ju inte lägga din tid på att försöka hjälpa mig. Du borde dock veta vid det här laget att jag verkligen uppskattat din hjälp och dina synpunkter så här långt, och har du förslag på bättre studieteknik och hur jag ska kunna lära mig bättre så varsågod, jag är som sagt tacksam för all hjälp jag kan få. Men har du bara fler synpunkter om mig som person så går det bra att skicka ett personligt meddelande, jag ser ingen anledning till varför vi ska ta det här.

Så jo, jag upplever ditt inlägg både otrevligt och orättvist.

TACK

Permalänk
Medlem

Hoppsan!

Det sista svaret tog all fokus.

Tack alla ni andra som svarat

Jag har inte hunnit kolla ordentligt ännu idag. Ska göra det så snart som möjligt.

Tack för hjälpen

Permalänk

@JJ72:
Om man ändå skriver en kod även om det är för att "testa" eller något annat så är det alltid bättre att döpa klasser / variabler / metoder på ett bra och vettigt sätt, det är så mycket lättare för andra personer att läsa din kod och förstå vad du vill göra. Annars känns det bara som att du tagit en uppgift. bytt namn på allt innanför klassen för att sen bara byta ut variablerna till t.ex. Dog för att lämna in ett skolarbete.

Jag uppskattar att du tycker hjälpen är bra, men för mig kändes det lite plojigt när du inte ens kunde med att döpa variabler/klasser rätt.

Permalänk
Medlem

Ok, jag förstår vad du menar och jag tar åt mig av kritiken. Jag skall absolut bättra mig på den punkten framöver (tror jag behöver rensa lite i mitt eclipse, haha).

Tack för hjälpen

Permalänk

För att komma igång lite med objektorientering tänker jag tillbaka på något som en föreläsare på KTH sa under en kurs.

* Beskriv först vad det är programmet ska göra i ord (har du en färdig uppgift så är ju det en bra beskrivning...).
* Alla substantiv i beskrivningen representerar i koden klasser.
* Alla verb i beskrivningen är metoder i respektive klass
* Alla adjektiv i beskrivningen är instansvariabler

Det här blir kanske inte alltid helt rätt men det är ofta en bra början.

Exempel:

Programmet ska ha bilar med olika färger som kan köra.

Då vill vi skapa en klass som representerar en bil, med en instansvariabel som säger vilken färg bilen ska ha samt en metod som får bilen att köra.

Visa signatur

Intel i7 920 | Asus P6T | OCZ Gold 1600MHz 6Gb | Asus GTX 560 Ti | Antec 300

Permalänk
Medlem
Skrivet av Swekorven:

För att komma igång lite med objektorientering tänker jag tillbaka på något som en föreläsare på KTH sa under en kurs.

* Beskriv först vad det är programmet ska göra i ord (har du en färdig uppgift så är ju det en bra beskrivning...).
* Alla substantiv i beskrivningen representerar i koden klasser.
* Alla verb i beskrivningen är metoder i respektive klass
* Alla adjektiv i beskrivningen är instansvariabler

Det här blir kanske inte alltid helt rätt men det är ofta en bra början.

Exempel:

Programmet ska ha bilar med olika färger som kan köra.

Då vill vi skapa en klass som representerar en bil, med en instansvariabel som säger vilken färg bilen ska ha samt en metod som får bilen att köra.

Det där tackar jag för

Permalänk
Medlem

Hej och tack igen alla. Jag har inte haft möjlighet att skriva här förrän nu.

Jag gjorde som så här...

class Book{ public static void main(String[] args) { String[]writer = new String[3]; String author = "Hemingway"; String author1 = "Kalle Kola, Hunter S Thompson"; String author2 = "Pelle Pelikan"; writer[0] = "Hemingway"; writer[1] = "Kalle Kola, Hunter S Thompson"; writer[2] = "Pelle Pelikan"; for(int i = 0; i<writer.length; i++){ if(writer[i] == author){ String title1 = "Boken 1"; String isbn1 = "7689-3"; int price1 = 150; Bookinfo a1 = new Bookinfo(author, title1, isbn1, price1); System.out.println(a1); String title2 = "Boken 2"; String isbn2 = "867764-8"; int price2 = 240; Bookinfo a2 = new Bookinfo(author1, title2, isbn2, price2); System.out.println(a2); String title3 = "Boken 3"; String isbn3 = "3546587-2"; int price3 = 360; Bookinfo a3 = new Bookinfo(author2, title3, isbn3, price3); System.out.println(a3); int sum = price1 + price2 + price3; System.out.println("Summan för de tre böckerna är: " + sum); }} }}

class Bookinfo{ private String author, title, isbn; private int price, sum; public Bookinfo(String author, String title, String isbn, int price){ this.author = author; this.title = title; this.isbn = isbn; this.price = price; } public String getAuthor(){ return author; } public String getTitle(){ return title; } public String getIsbn(){ return isbn; } public int getPrice(){ return price; } public int getSum(){ return sum; } public String toString(){ return "Författare: " + author + "\n" + "Titel: " + title + "\nIsbn: " + isbn + "\nPris: " + price + "\n"; } public int sum(){ return sum; } }

Om ni "proffs" har något att tillägga eller kommentera om hur ni skulle ha gjort så får ni gärna dela med er.

Tack för er tid

Permalänk
Medlem

Vad är meningen med din loop? Du tittar om platserna i arrayen är lika med author? Sen skriver du ut allt oavsett, du skulle alltså kunna ta bort din loop helt här då den egentligen inte används förutom att gå in första gången.

Hur tänkte du med den?

Du har även gjort en konstruktor i bookinfo-klassen, du kan skriva värdena i konstruktorn direkt när du skapar dina böcker, du behöver inte göra nya variabler för detta.

Bookinfo a1 = new Bookinfo("Hemmingway", "Boknamn", "12402420-12", 299);

Visa signatur

"Happiness is only real when shared"

Permalänk
Medlem

Kanon!

Tack för din input. Jag ska genast kolla

Jag krånglade en del fram och tillbaka med koden, så det kan mycket väl ha blivit någon rest som ligger kvar. Tack igen.

Permalänk
Medlem

Haha.

Ja, den där loopen..... snygg kanske?

Den är iaf borta nu

Permalänk
Medlem

Varför har du author i din konstruktor men också att du lägger in dina författare i en array?

Visa signatur

"Happiness is only real when shared"

Permalänk
Medlem
Skrivet av sebbeharry:

Varför har du author i din konstruktor men också att du lägger in dina författare i en array?

Det var en uppgift där vi skulle ha endast författarna i en array och allt annat i konstruktorn.
Knäpp uppgift.