Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse
01/12: Innlevering 4 er nå lagt ut. Se dokumenter under lenken Oppgaver > Innlevering4.

FYI er denne til tirsdag den 12.12 så litt bedre tid for de om skulle trenge det

 

(Bare et tips til Emily og Berg) :)

7402695[/snapback]

 

Jada..snart ferdig med denne uansett :)

Lenke til kommentar

Tror prosjektet gikk veldig bra.. Men må vente å se hva karakteren blir.. Opopgaven var å lage en webside som presenterte gruppa vårpå en kreativ måte..

 

Nå har jeg fått min siste Java innlevering.. Så om noen føler for å hjelpe så legg emg gjerne til på msn.. :p [email protected] (jepp.. litt desp for help...) =)=)

Lenke til kommentar
Tror prosjektet gikk veldig bra.. Men må vente å se hva karakteren blir.. Opopgaven var å lage en webside som presenterte gruppa vårpå en kreativ måte..

 

Nå har jeg fått min siste Java innlevering.. Så om noen føler for å hjelpe så legg emg gjerne til på msn.. :p [email protected]  (jepp.. litt desp for help...) =)=)

7418279[/snapback]

 

Playlist og mp3song? :roll:

Lenke til kommentar

Mr.Berg, tingene er at du må kunne Java før du i det hele tatt kan bruke det på web.. Og med web-programmering er det som alle andre steder man starter på her i verden, man begynner med basis-ferdighetene. Kanskje du behersker Java relativt greit, men da spør jeg deg: hvorfor tok du f.eks ikke da et ekstra fag hvor programmering mot web var hovedmålet?

Lenke til kommentar

PlayList og Mp3Song ja... har kommet meg gjennom endel av metodene, men har noen igjen.. Java er vireklig ikke min greie.. Gleder emg til neste år!! Interaktiv design .. :w00t: Sux at man må bestå java for å gå alle tre årene.. må nok ta en samtale med hun med håret etterhvert.. Så Mr.Berg.. du skal gå videre i Oslo neste år da? På webCom

Lenke til kommentar

Veel... Ikke den vanskeligste så langt, egentlig. I oppgaven får vi en slags kodedisposisjon over klassen PlayList, som skal kunne manipulere en array av Mp3Song-objekter. Metodeskallene er med, men vi må selv skrive selve metodekroppene.

 

Dette skal da jobbe opp mot den ferdige Mp3Song-klassen osv., og til slutt skal vi lage et testprogram som tester alle metodene i PlayList.

 

 

Høres kanskje ikke veldig vanskelig ut, men jeg syns dette var en veldig fin oppgave som jeg lærte veldig mye av. Særlig lærte jeg mye mer om hvordan metoder fungerer, hvordan skrive kode som baserer seg på DRY-prinsippene, en del basic-ting som har gått meg hus forbi og mer. :)

 

Oppgavetekst [PDF]

Lenke til kommentar

Så fin ut den oppgaven. Ganske kult at alle navn er på engelsk, det er mye bedre enn å drive på med særnorske navn.

 

Jeg synes egentlig ikke at Mp3Song burde inneholde minutes, men heller kun seconds, som burde kunne overskride 59s. Playlist burde tatt seg av visningen av tiden.

 

Tror forresten jeg skal gjøre den oppgaven nå. (:

Lenke til kommentar

Jeg ville hatt noe ala dette som utgangspunkt:

Playlist.java

 

import java.util.ArrayList;
import java.util.Collections;
class Playlist {
String playlistName;
ArrayList playlist;
int maxCapasity;
public Playlist(String playlistName, int maxCapasity) {
 this.playlistName = playlistName;
 playlist = new ArrayList();
 this.maxCapasity = maxCapasity;
}
public boolean isFull() {
 return (playlist.size() == maxCapasity);
}
public boolean isEmpty() {
 return (playlist.size() == 0);
}
public int getNumbersOfSongsInPlaylist() {
 return playlist.size();
}
public void showPlaylist() {
 String playlistInfo = "";
 for (int i = 0; i < playlist.size(); i++) {
 	playlistInfo += ((Mp3Song)playlist.get(i)).toString();
 	playlistInfo += "\n";
 }
 System.out.println("\n\tPlaylist:\n\n" + playlistInfo);
}
private int findFirstAvailablePosition() {
 //unnecessary code
 return -1;
}
private int findSongPos(String songName, String artist) {
 for (int i = 0; i < playlist.size(); i++) {
 	if (artist.equals(((Mp3Song)playlist.get(i)).getArtist()) && (songName.equals(((Mp3Song)playlist.get(i)).getTrackName()))) return i;
 }
 return -1;
}
public boolean addSongToList(String songName, String artist, int mins, int secs, String genre) {
 if (!isFull()) {
 	playlist.add(new Mp3Song(songName,artist,mins,secs,genre));
 	return true;
 }
 else return false;
}
public String getSongDetails(String songName, String artist) {
 return ((Mp3Song)playlist.get(findSongPos(songName, artist))).toString();
}
public Mp3Song removeSong(String songName, String artist) {
 if (findSongPos(songName, artist) < 0) return null;
 Mp3Song tmp = (Mp3Song)playlist.get(findSongPos(songName, artist));
 playlist.remove(findSongPos(songName, artist));
 return tmp;
}
public int removeAllByArtist(String artistToBeRemoved) {
 int removedSongs = 0;
 for (int i = 0; i < playlist.size(); i++) {
 	if (artistToBeRemoved.equals(((Mp3Song)playlist.get(i)).getArtist())) {
   playlist.remove(i);
   removedSongs++;
   i--; //Grunnet array blir kortere, og at vi ikke maa hoppe over neste
 	}
 }
 return removedSongs;
}
public int removeAllByGenre(String genreToBeRemoved) {
 int removedSongs = 0;
 for (int i = 0; i < playlist.size(); i++) {
 	if (genreToBeRemoved.toUpperCase().equals(((Mp3Song)playlist.get(i)).getGenre())) {
   playlist.remove(i);
   removedSongs++;
 	}
 }
 return removedSongs;
}
}

 

Mp3Spiller.java

 

import java.util.Scanner;
class Mp3Spiller {
Mp3Spiller() {
 Playlist m3u = new Playlist("My favoutire hits", 10);
 if (!m3u.isFull()) {
 	//songName,artist,mins,secs,genre
 	m3u.addSongToList("Tool", "Eulogy", 8, 39, "Hard rock");
 	m3u.addSongToList("Tool", "Schism", 6, 11, "Hard rock");
 	m3u.addSongToList("Tool", "Stinkfist", 4, 20, "Christian pop");
 	m3u.addSongToList("Tool", "Parabol", 2, 20, "Hard rock");
 	m3u.addSongToList("Tool", "Parabola", 6, 43, "Hard rock");
 	
 	m3u.addSongToList("Ribozyme", "(Zilch)", 5, 12, "Hard rock");
 	m3u.addSongToList("Rockatansky", "Sing along song", 3, 20, "Rock");
 	m3u.addSongToList("Rockatansky", "Broken Hill", 4, 3, "rock");
 	m3u.addSongToList("Ribozyme", "Blacklist Mercy", 7, 0, "Hard rock");
 }
 m3u.showPlaylist();
 
 System.out.println("Fjerner alle Christian Pop");
 m3u.removeAllByGenre("Christian Pop");
 
 m3u.showPlaylist();
 
 System.out.println("Fjerner alle Rockatansky-sanger");
 System.out.println("Fjernet " + m3u.removeAllByArtist("Rockatansky") + " sanger");
 
 m3u.showPlaylist();
 
 System.out.println("Fjerner alle Ribozyme-sanger");
 System.out.println("Fjernet " + m3u.removeAllByArtist("Ribozyme") + " sanger");
 
 m3u.showPlaylist();
 
 System.out.println("Fjerner Tool - Eulogy");
 Mp3Song tmp = m3u.removeSong("Eulogy", "Tool");
 if (tmp == null) System.out.println("\nFant ikke sangen!");
 else System.out.println("ok");
 
 m3u.showPlaylist();
}
public static void main(String[] args) {
 new Mp3Spiller();
}
}

 

Endret av drange
Lenke til kommentar

Ligger nok noe i det Mr.Berg sier om at vi må løse oppgaven etter så langt vi har kommet i læringen i denne faget her.. Dine koder var ikke helt like mine for å si det sånn.. Jeg har kommet til findSongPos metoden.. Og hadde ikke dødd om jeg fikk noen hint der... :D

 

Leser til HTML eksamen også, er ikke helt sikker på om jeg blir ferdig med innleveringen.. Men men :p har levert de andre og fått bra på de.. Og har en mnd å lære med masse java på...

Endret av Emily83
Lenke til kommentar

findSongPos skal returnere en int, nemlig indeksen i tabellen (ofte representert ved en i).

 

Så hvis du begynner med å kjøre igjennom tabellen din som du sikkert har gjort mange ganger med en for-loop, så er vi godt på vei.

 

Jeg går her ut ifra at du har kalt tabellen din for playlist slik:

Mp3Song[] playlist;
playlist = new Mp3Song[antallSanger];

Her kjører vi gjennom hele tabellen:

for (int i = 0; i < playlist.length; i++) {
// kode for å finne en sang med artist lik artisten vi skal ha og samme for tittel
}

 

For å sammenligne alle sangene med tittel og artistnavn, må vi bruke strengsammenligneren equals slik:

songName.equals(playlist[i].getTrackName())

Den sammenligner om strengen vi får inn til metoden, songName, er identisk med strengen vi får tilbake fra metoden i klassen Mp3Song, getTrackName().

Så må vi gjøre det samme med artist, og den koden blir nesten identisk:

artist.equals(playlist[i].getArtist())

 

Og så må vi bare hive alt sammen inn i en metode, og sjekke om de finnes, hvis ikke det finnes en låt med den tittelen og den artisten, returnerer vi -1 for å fortelle programmet at den ikke eksisterer:

for (int i = 0; i < playlist.length; i++) {
  if (playlist != null) if (artist.equals(playlist[i].getArtist()) && songName.equals(playlist[i].getTrackName())) return i;
}
return -1

Det hiver du inn i metodekroppen

public int findSongPos(String artist, String songName) {

}

 

OBS: Jeg har ikke testet det der, og det blir sikkert noen kompilerings- og logiske feil, men lykke til. Si ifra hvis det ikke fungerer.

Endret av drange
Lenke til kommentar
Ligger nok noe i det Mr.Berg sier om at vi må løse oppgaven etter så langt vi har kommet i læringen i denne faget her.. Dine koder var ikke helt like mine for å si det sånn.. Jeg har kommet til findSongPos metoden.. Og hadde ikke dødd om jeg fikk noen hint der...  :D

 

Leser til HTML eksamen også, er ikke helt sikker på om jeg blir ferdig med innleveringen.. Men men :p har levert de andre og fått bra på de.. Og har en mnd å lære med masse java på...

7461021[/snapback]

 

 

Hva med dette:

 

private int findSongPos(String songName, String artist){
    int i = 0;
    while(i < songList.length){
        if(songList[i] == null){}
        else{
            if(artist.equals(songList[i].getArtist())){
                if(songName.equals(songList[i].getTrackname())){
                    return i;
                   }
               }
           }
           i++;
       }
       return -1;
   }  

 

Den har jeg laget i min klasse, og den fungerer i hvertfall :p Du kan jo sette opp som du vil, men poenget ser du der. Bare til å si i fra om du lurer på noen av de andre metodene :)

 

Edit: drange, den koden vil vel i teorien returnere -1 dersom det første objektet i arrayen ikke matcher med den angitte sangen? Er derfor jeg har min return -1; utenfor selve løkken.

 

Edit igjen: der ja, bare glem den første editen :)

Endret av Thomas`
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...