Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop med du skall lära dig tekniken för att anropa metoder. När du ringer ett nummer på din telefon vet du inte vad som händer i telefonen. Du anropar då en metod och förlitar dig på det. På samma sätt gäller att använda klasser och metoder från biblioteket. Du läser i java specifikationen hur en metod används samt vad en metod gör. Du litar på det och anropar metoden i ditt program där du vill ha respektive arbete gjort. Del 1: Övningar Om du aldrig har programmerat är det obligatoriskt att du läser kapitlen 3 i boken samt skriver 1-2 programexempel från boken innan du börjar med labbarna. Del 2: Labbar Gör övningarna innan du börjar med labbarna. För varje uppgift nedan gäller att du gör följande: 1) Läser hela uppgiften. Försöker få den stora bilden om vad uppgiften går ut på. 2) Planera uppgiften genom att identifiera - indata till programmet - utdata från programmet - vilka beräkningar som krävs för att utifrån indata realisera utdata Om du inte lyckats skriva java koden för uppgiften måste du visa handledaren en skriftligt planeringen av uppgiften.
FunnyString Skriv ett program som heter "FunnyString" som uppmanar användaren att ange en favoritfärg, mat, djur och en väns namn. Använd ett Scanner-objekt och läsa en sak per rad. Därefter skall en utskrift som nedanstående skrivas ut. Till exempel om användaren skrev in blå färg, hamburgare för mat, hund för djur och Jake för namn skall utskriften vara: I had a dream that Jake ate a blue dog and said it tasted like hamburger! Email Skriv ett program som läser in en sträng som innehåller ett namn. Programmet skall bygga ett förslag till e-postadress med de första tre bokstäverna i förnamnet de första 4 bokstäverna i efternamnet och naturligtvis en domän. Om jag kör programmet med mitt namn Nicolina Mansson som input kommer jag att få följande e-postadress. NicMans@student.hh.se Ledning: Använd Scanner för att läsa in input data. Använd metoder från klassen String : indexof( ) för att hitta mellanslaget mellan förnamn och efternamn, substring(), för att skapa del av string Se boken eller http://www.javabeginner.com/learn-java/javastring-class Extra (ej obligatoriskt). a) Skriv en metod som gör i princip samma sak och har följande signatur public static String create_email( String name){} Metoden skall returnera tar som indata ett komplett namn och skall returnera email adressen enligt tidigare beskrivning. Anropa metoden i main och testa om det fungerar. b) Du kan skapa email för hela klasen. Filen ITF, programmet CreateMailList (finns länkade på kursens hemsida) visar hur man kan läsa in data från en fil och använda metoden create_email för att printa till output maillista för hela klassen. Testa programmet.
FileExtension Givet en sträng s som representerar namnet på en fil, skriv ett program som identifierar vilken typ av fil det är. Filtypen är delsträngen efter den sista punkten i filnamnet. Till exempel filtypen för monalisa.jpg är jpg, och filtypen av mona.lisa.png är png. Skriv ut svaret med ledande text, t.ex. Filens typ är :? Extra (ej obligatoriskt). Skriv en metod som gör i princip samma sak och har följande signatur public String getfiletype( String filename) { }. Metoden skall returnera delsträngen som representera filtypen. Anropa metoden getfiletype() i main() och testa om det fungerar. PlayWithCharacters För den här uppgiften skall du öppna en fil och en klass som du kallar PlayWithCharacters. I klassen lägger du en main metod och sedan följer du beskrivningen nedan. Detta är grunden till en del krypteringsalgoritmer som du kommer att jobba med senare. Ett tecken, datatypen char, a, b, c, mm, representeras i datorns minne som numeriska värde. Till exempel a har det numeriska värdet 97 och F har 70. Vilka numeriska värde det gäller är standardiserad och kalls för ASCII (American Standard Code Information Interchange). ASCII-tabellen innehåller 128 både utskrivbara och inte skrivbara tecken. För att tillgodose karaktär symboler för icke-engelska språk, finns numera en ny standard etablerad kallad, Unicode Worldwide Character Standard. Om du kar en sträng text innehållande ordet hej. Kan du ta reda på vilka ascii kod varje bokstav har på följande sätt: char c = text.charat(0); System.out.println( c) // kommer att skriva ut h och System.out.println( (int)c) // kommer att skriva ut ett numeriskt värde. Vilket är det? Om du vill spara det numeriska värdet i en variabel kan du skiva int bokstav_0= (int) text.charat(0); int bokstav_1= (int) text.charat(1);
int bokstav_2= (int) text.charat(2); Skriv ut variablerna bokstav_0, bokstav_1, bokstav_2. Låt os kryptera texten hej. Ett sätt att göra det är att ändra teckens interna värde. Låt oss bara addera 1 på varje bokstav. bokstav_0= bokstav_0+1; bokstav_1= bokstav_0+1; bokstav_2= bokstav_0+1; Vi gör bokstäverna till tecken igen och lägger ihop dem till en ny sträng. String nytext= + (char)bokstav_0+ (char)bokstav_1+(char)bokstav_2 ; Skriv ut den nya texten. Vad blev det? Vad blir det den nya texten om du till exempel adderar 3 på varje bokstav? Se i boken eller leta på nätet efter Ascii tabbelen. Vilka interna värden har siffrorna 0-9? ConvertingStrings För den här uppgiften skall du öppna en fil och en klass som du kallar ConvertingStrings. Ofta program behöver omvandla data från String, till heltal. I den här uppgiften skall du förstå när och varför. Skriv ett program som frågar användaren efter sitt födelsedatum. Födelsedatum skall matas in till programmet i formatet ÅÅÅÅ-MM-DD. Därefter skall programmet beräkna hur gammal personen är. Du måste inte ta hänsyn till månader och dagar. Räkna bara med helår. Så om jag matar in till programmet 1977-03-19 skall programmet skriva ut Du är 35 år. Ledning! 1. Du måste beräkna delsträngen som innehåller året, använd metoden substring() 2. För att kunna göra beräkning med årtalet skall årtalet konverteras till från String -> int. int år= Integer.parseInt( här data som skall konverteras ) // se boken 3. Gör beräkning, 2012 år. 4. Skriv ut svar
RollingDice Skriv ett Java-program som simulerar kast av ett par tärningar. För varje tärning skall programmet generera ett slumptal mellan 1 och 6. Programmet skall skriva ut resultatet efter tärningskastet för varje tärning samt summan av båda tärningarna. Ledning! Du skall använda Random klassen. Random klassen är en del av java.util paketet som måste importeras. Random numbergen= new Ranndom(); // Random-objekt skall skapas BARA en gång tarning_1 = numbergen.nextint(6); // slumpa tal skall göras varje gång i programmet där du behöver ett nytt tal Invest Om du investerar P kronor med R procent ränta under N år kommer din investering växa till P * (1 + (R/100.0)) ^ N dollar. Skriv ett program som accepterar P, R och N (P av datatypen double och R, N som heltal) och beräkna hur mycket pengar som intjänats efter N år. Använd Math.pow ( ) metoden för att beräkna potensuttrycket. Skriv ut resultatet.