Jag har en sökfunktion som fungerar. Nu vill jag använda denna och tabort ett Media ur listan. Hur gör jag??? Eftersom detta är en skoluppgift så tycker jag du bör försöka själv lite mera först. JO visst är det en skoluppgift och jag har försökt att fixa detta men jag lyckas inte. har löst det nu.problem med radering av objekt.
kod:--------------------------------------------------------------------------------
public class MediaContainer
{
private int SIZE = 10;
private Media[] lista;
private int m_index;
public MediaContainer()
{
lista = new Media[SIZE];
m_index = 0;
}
public boolean addMedia(Media i_Media)
{
if (m_index<SIZE)
lista[m_index++]=i_Media;
else
return false;
return true;
}
public Media[] searchMedia(String i_Media)
{
Media[] temp = new Media[m_index];
int i, count = 0;
for(i = 0; i < m_index; i++)
{
if(lista[i].getTitel().equalsIgnoreCase(i_Media))
temp[count++] = lista[i];
}
Media[] hits = new Media[count];
for(i = 0; i < count; i++)
hits[i] = temp[i];
return hits;
}
public void print()
{
System.out.println("Skriver ut all media");
for(int i=0; i<m_index; i++)
{
System.out.println();
lista[i].print();
System.out.println(i);
}
}
}
--------------------------------------------------------------------------------
sen kommer testprogrammet
kod:--------------------------------------------------------------------------------
import java.io.*;
import java.util.*;
class testMedia
{
// ============================================================
==============
// Beskrivning: Skriver ut menyvalen
// ============================================================
=============
public static void printMenu()
{
System.out.println("******** MENY ********");
System.out.println("1. Lagg in ny media");
System.out.println("2. Sök efter Cd/Film");
System.out.println("3. Tabort ett objekt");
System.out.println("4. Skriv ut all Media");
System.out.println("q. AVSLUTA");
System.out.println();
System.out.print("Valj vad du vill gora: ");
System.out.flush();
}
// ============================================================
==============
// Beskrivning: Frågar efter MediaAttribut och skapar en MEdia utifrån detta
// Returvärde: skapade Medier
// ============================================================
=============
public static Cd createCd() throws IOException
{
BufferedReader indata = new BufferedReader(new InputStreamReader(System.in));
String m_titel, m_artist, temp;
int m_utgivningsÅr, m_antalLåtar;
float m_längd;
System.out.print("Titel ");
m_titel = indata.readLine();
System.out.print("Artist ");
m_artist = indata.readLine();
System.out.print("Utgivningsår ");
temp = indata.readLine();
m_utgivningsÅr = Integer.parseInt(temp);
System.out.print("Antal låtar ");
temp = indata.readLine();
m_antalLåtar = Integer.parseInt(temp);
System.out.print("Längd ");
temp = indata.readLine();
m_längd = Float.parseFloat(temp);
return new Cd(m_titel, m_artist, m_utgivningsÅr, m_antalLåtar, m_längd);
}
public static void main (String[] args) throws IOException
{
BufferedReader indata = new BufferedReader(new InputStreamReader(System.in));
boolean cont = true;
char choice;
MediaContainer lista = new MediaContainer();
System.out.println("Skapar Cdskivor");
lista.addMedia(new Cd ("Thomas Ledin","Thomas Ledin", 2004, 15, 65.23f));
lista.addMedia(new Cd ("Carolas bästa","Carola", 2003, 18, 75.31f));
lista.addMedia(new Film ("Troja", 76.4f, 1998, "Brad Pitt","Action"));
System.out.println();
do
{
//Menyval
printMenu();
choice = indata.readLine().charAt(0);
System.out.println();
switch(choice)
{
//Om man valde menyval 1, lagg in ny bil
case '1':
Media newCd = createCd();
boolean res = lista.addMedia(newCd);
if (res)
{
System.out.println();
System.out.println("Cd:n skapades");
newCd.print();
lista.print();
}
else
//MediaContainer lista = new MediaContainer(20);
System.out.println("Systemet är fullt");
break;
//Menyval 2. Söker efter Media
case '2':
//Läs in vilken Titel som ska letas efter
System.out.println("Vilken Titel? ");
String Titel = indata.readLine();
//Sök efter Titel
System.out.println();
System.out.println("Soker efter " + Titel + "...");
Media[] result = lista.searchMedia(Titel);
//Presentera resultatet
int noOfHits = result.length;
System.out.println();
for(int i = 0; i < noOfHits; i++)
{
result[i].print();
System.out.println("Antal Träffar " +noOfHits);
System.out.println(i);
}
break;
case '3':
break;
//Menyval 4. Skriver ut all media som är inlagd.
case '4':
lista.print();
break;
//Om man valde att avsluta
case 'q':
System.out.println("Nu stängs programmet av.");
cont = false;
break;
//Används om du gör ett felaktigt val
default:
System.out.println("Prova nagot annat...\n");
}
}
while(cont);
}
}
--------------------------------------------------------------------------------
Det är under case'3' som jag vill ha in en funktion som söker på en titel och sen raderas den första träffen i listan.Sv: problem med radering av objekt.
Sv: problem med radering av objekt.
Min tänke är att göra något liknande men jag får inte till det.
Media[] lista till att bli vector och sen kan man använda remove i vectorklassen men det lyckas jag inte med
Var kan jag hitta hjälp om detta så att man kan titta ännu mer på det.Sv: problem med radering av objekt.
public void removeMedia(String i_Media)
{
int i, found = -1;
for(i = 0; i < m_mediaArray; i++)
{
if(lista[i].getTitel().equalsIgnoreCase(i_Media))
{
found = i;
break;
}
}
if(found != -1)
{
lista[found] = lista[m_mediaArray - 1];
m_mediaArray--;
System.out.println("Nu är objektet borttaget");
}
}