Guten Abend,
ich schreibe gerade ein Programm, mit welchem man diverse Produkte verwalten kann bzw. können sollte, nur leider habe ich massive Probleme bei der Umsetzung.
Und zwar komme ich einfach nicht darauf, wie man am Besten die Anzahl eines Produktes, welches sich in einer ArrayList befindet, verringern kann.
Ich dachte, dass ich mit [nameDerListe].set(Index#, gewünschte Zahl) eine Methode schreiben könnte, welche das übernimmt, allerdings kann man anscheinend nur Strings und keine int geschweigedenn double Werte ersetzen [zumindest vermute ich das, da ich beim besten willen auf keine Lösung komme].
Hier mal der Code meiner 2 Klassen:
[highlight=Java]public class Medium {
private String name ="Unknown";
private String content = "Unknown";
private String place = "Unknown";
private int pieces = 0;
private double price = 0.;
/**
* Represents Cathegories
*/
public enum Cathegories
{
Humor, Action, Krimi, Doku, Spielfilm, Serie, Spiel
}
//
private Medium.Cathegories cathegory = Medium.Cathegories.Humor;
/**
* Represents Mediatype
*/
public enum Mediatype
{
DVD, CD, Band, AudioCD, VHSBAND, Zeitschrift, Buch
}
//
private Medium.Mediatype mediatype = Medium.Mediatype.DVD;
/**
* Standard constructor
*/
public Medium() {
this.setName("DVD");
this.setContent("Great Movie");
this.setPlace("Area 5b");
this.setPieces(100);
this.setPrice(14.99);
this.setCathegory(Cathegories.Action);
this.setMediatype(Mediatype.DVD);
}
/**
* Returns the name of the product
*/
public String getName() {
return name;
}
/**
* Sets the name of the product
*/
public void setName(String name) {
this.name = name;
}
/**
* Returns the content
*/
public String getContent() {
return content;
}
/**
* Sets the content
*/
public void setContent(String content) {
this.content = content;
}
/**
* Returns the place
*/
public String getPlace() {
return place;
}
/**
* Sets the place
*/
public void setPlace(String place) {
this.place = place;
}
/**
* Returns the number of pieces
*/
public int getPieces() {
return pieces;
}
/**
* Sets the number of pieces
*/
public void setPieces(int pieces) {
this.pieces = pieces;
}
/**
* Returns the price
*/
public double getPrice() {
return price;
}
/**
* Sets the price
*/
public void setPrice(double price) {
this.price = price;
}
/**
* Returns the cathegory
*/
public Medium.Cathegories getCathegory() {
return cathegory;
}
/**
* Sets the cathegory
*/
public void setCathegory(Medium.Cathegories cathegory) {
this.cathegory = cathegory;
}
/**
* Returns the mediatype
*/
public Medium.Mediatype getMediatype() {
return mediatype;
}
/**
* Sets the cathegory
*/
public void setMediatype(Medium.Mediatype mediatype) {
this.mediatype = mediatype;
}
}
[/highlight]
[highlight=Java]import java.util.ArrayList;
import java.util.Arrays;
import java.awt.List;
import java.io.*;
public class Shop {
private static void searchByName() throws IOException
{
LineNumberReader in = new LineNumberReader(new InputStreamReader(System.in));
String s = in.readLine();
if (s.equals("DVD"))
{
System.out.println("...");
}
else
{
System.out.println("Nichts gefunden");
}
}
public void sellArticle()
{
}
public void raisePrice()
{
}
public void deleteArticle()
{
// .clear();
}
private static void listNewArticle()
{
Medium medium = new Medium();
medium.setName("Neuer Artikel");
medium.setContent("Neu");
medium.setPlace("Neu");
medium.setPieces(100);
medium.setPrice(14.99);
medium.setCathegory(Medium.Cathegories.Humor);
medium.setMediatype(Medium.Mediatype.DVD);
String[] newArticle = new String[] {String.format("%s, %s, %s, %s, %s, %s, %s",
medium.getName(),
medium.getContent(),
medium.getPlace(),
medium.getPieces(),
medium.getPrice(),
medium.getMediatype(),
medium.getCathegory())};
ArrayList<String> listOfNewArticle = new ArrayList<String>(Arrays.asList(newArticle));
System.out.println(listOfNewArticle);
}
private static void addArticle()
{
}
public static void main(String[] args) throws IOException
{
Medium medium = new Medium();
// Create ArrayList for heading
String[] heading = new String[] {"Name", "Inhaltsangabe", "Ort", "Stückzahl", "Preis", "Kategorie", "Medientyp"};
ArrayList<String> listOfHeading = new ArrayList<String>(Arrays.asList(heading));
// Create ArrayList for articles
String[] articleDescription = new String[] {String.format("%s, %s, %s, %s, %s, %s, %s",
medium.getName(),
medium.getContent(),
medium.getPlace(),
medium.getPieces(),
medium.getPrice(),
medium.getMediatype(),
medium.getCathegory())};
ArrayList<String> listOfArticles = new ArrayList<String>(Arrays.asList(articleDescription));
System.out.println(listOfHeading);
System.out.println("==================================================================");
System.out.println(listOfArticles);
Shop.listNewArticle();
System.out.println();
System.out.println("[Suche] Bitte Namen eingeben: ");
Shop.searchByName();
}
}
[/highlight]
Ich war der Meinung, dass ich wohl die ganze Struktur der Lists falsch gewählt habe, denn es ist wohl besser, wenn man Namen und Preis usw. in separate ArrayLists steckt, anstatt zeilenweise alles niederzuschreiben.
Habe nach dieser Überlegung versucht die ArrayLists anderes anzuordnen:
[highlight=Java]String[] names = new String[] {medium.getName()};
ArrayList<String> listOfNames = new ArrayList<String>(Arrays.asList(names));
String[] content = new String[] {medium.getContent()};
ArrayList<String> listOfContent = new ArrayList<String>(Arrays.asList(content));
String[] places = new String[] {medium.getPlace()};
ArrayList<String> listOfPlaces = new ArrayList<String>(Arrays.asList(places));
int[] pieces = new int[] {medium.getPieces()};
ArrayList<int[]> listOfPieces = new ArrayList<int[]>(Arrays.asList(pieces));
double[] prices = new double[] {medium.getPrice()};
ArrayList<double[]> listOfPrices = new ArrayList<double[]>(Arrays.asList(prices));
String[] cathegories = new String[] {String.format("%s", medium.getCathegory())};
ArrayList<String> listOfCathegories = new ArrayList<String>(Arrays.asList(cathegories));
String[] mediatypes = new String[] {String.format("%s", medium.getMediatype())};
ArrayList<String> listOfMediatypes = new ArrayList<String>(Arrays.asList(mediatypes));
String[] all = new String[] {String.format("%s, %s, %s, %s, %s, %s, %s", listOfNames,
listOfContent,
listOfPlaces,
listOfPieces,
listOfPrices,
listOfCathegories,
listOfMediatypes)};
ArrayList<String> list = new ArrayList<String>(Arrays.asList(all));[/highlight]
Nur leider werden die Zahlen jetzt nicht mehr angezeigt und irgendwie glaube ich auch nicht, dass durch die Strukturierung mein Problem mit dem nicht verwenden können von add() für int bzw. double gelöst sein wird.
Wäre nett, wenn vllt. jemand einen Blick auf den Code werfen könnte, denn ich sitze eine halbe Ewigkeit dran und komme beim besten Willen nicht mehr weiter :/
ich schreibe gerade ein Programm, mit welchem man diverse Produkte verwalten kann bzw. können sollte, nur leider habe ich massive Probleme bei der Umsetzung.
Und zwar komme ich einfach nicht darauf, wie man am Besten die Anzahl eines Produktes, welches sich in einer ArrayList befindet, verringern kann.
Ich dachte, dass ich mit [nameDerListe].set(Index#, gewünschte Zahl) eine Methode schreiben könnte, welche das übernimmt, allerdings kann man anscheinend nur Strings und keine int geschweigedenn double Werte ersetzen [zumindest vermute ich das, da ich beim besten willen auf keine Lösung komme].
Hier mal der Code meiner 2 Klassen:
[highlight=Java]public class Medium {
private String name ="Unknown";
private String content = "Unknown";
private String place = "Unknown";
private int pieces = 0;
private double price = 0.;
/**
* Represents Cathegories
*/
public enum Cathegories
{
Humor, Action, Krimi, Doku, Spielfilm, Serie, Spiel
}
//
private Medium.Cathegories cathegory = Medium.Cathegories.Humor;
/**
* Represents Mediatype
*/
public enum Mediatype
{
DVD, CD, Band, AudioCD, VHSBAND, Zeitschrift, Buch
}
//
private Medium.Mediatype mediatype = Medium.Mediatype.DVD;
/**
* Standard constructor
*/
public Medium() {
this.setName("DVD");
this.setContent("Great Movie");
this.setPlace("Area 5b");
this.setPieces(100);
this.setPrice(14.99);
this.setCathegory(Cathegories.Action);
this.setMediatype(Mediatype.DVD);
}
/**
* Returns the name of the product
*/
public String getName() {
return name;
}
/**
* Sets the name of the product
*/
public void setName(String name) {
this.name = name;
}
/**
* Returns the content
*/
public String getContent() {
return content;
}
/**
* Sets the content
*/
public void setContent(String content) {
this.content = content;
}
/**
* Returns the place
*/
public String getPlace() {
return place;
}
/**
* Sets the place
*/
public void setPlace(String place) {
this.place = place;
}
/**
* Returns the number of pieces
*/
public int getPieces() {
return pieces;
}
/**
* Sets the number of pieces
*/
public void setPieces(int pieces) {
this.pieces = pieces;
}
/**
* Returns the price
*/
public double getPrice() {
return price;
}
/**
* Sets the price
*/
public void setPrice(double price) {
this.price = price;
}
/**
* Returns the cathegory
*/
public Medium.Cathegories getCathegory() {
return cathegory;
}
/**
* Sets the cathegory
*/
public void setCathegory(Medium.Cathegories cathegory) {
this.cathegory = cathegory;
}
/**
* Returns the mediatype
*/
public Medium.Mediatype getMediatype() {
return mediatype;
}
/**
* Sets the cathegory
*/
public void setMediatype(Medium.Mediatype mediatype) {
this.mediatype = mediatype;
}
}
[/highlight]
[highlight=Java]import java.util.ArrayList;
import java.util.Arrays;
import java.awt.List;
import java.io.*;
public class Shop {
private static void searchByName() throws IOException
{
LineNumberReader in = new LineNumberReader(new InputStreamReader(System.in));
String s = in.readLine();
if (s.equals("DVD"))
{
System.out.println("...");
}
else
{
System.out.println("Nichts gefunden");
}
}
public void sellArticle()
{
}
public void raisePrice()
{
}
public void deleteArticle()
{
// .clear();
}
private static void listNewArticle()
{
Medium medium = new Medium();
medium.setName("Neuer Artikel");
medium.setContent("Neu");
medium.setPlace("Neu");
medium.setPieces(100);
medium.setPrice(14.99);
medium.setCathegory(Medium.Cathegories.Humor);
medium.setMediatype(Medium.Mediatype.DVD);
String[] newArticle = new String[] {String.format("%s, %s, %s, %s, %s, %s, %s",
medium.getName(),
medium.getContent(),
medium.getPlace(),
medium.getPieces(),
medium.getPrice(),
medium.getMediatype(),
medium.getCathegory())};
ArrayList<String> listOfNewArticle = new ArrayList<String>(Arrays.asList(newArticle));
System.out.println(listOfNewArticle);
}
private static void addArticle()
{
}
public static void main(String[] args) throws IOException
{
Medium medium = new Medium();
// Create ArrayList for heading
String[] heading = new String[] {"Name", "Inhaltsangabe", "Ort", "Stückzahl", "Preis", "Kategorie", "Medientyp"};
ArrayList<String> listOfHeading = new ArrayList<String>(Arrays.asList(heading));
// Create ArrayList for articles
String[] articleDescription = new String[] {String.format("%s, %s, %s, %s, %s, %s, %s",
medium.getName(),
medium.getContent(),
medium.getPlace(),
medium.getPieces(),
medium.getPrice(),
medium.getMediatype(),
medium.getCathegory())};
ArrayList<String> listOfArticles = new ArrayList<String>(Arrays.asList(articleDescription));
System.out.println(listOfHeading);
System.out.println("==================================================================");
System.out.println(listOfArticles);
Shop.listNewArticle();
System.out.println();
System.out.println("[Suche] Bitte Namen eingeben: ");
Shop.searchByName();
}
}
[/highlight]
Ich war der Meinung, dass ich wohl die ganze Struktur der Lists falsch gewählt habe, denn es ist wohl besser, wenn man Namen und Preis usw. in separate ArrayLists steckt, anstatt zeilenweise alles niederzuschreiben.
Habe nach dieser Überlegung versucht die ArrayLists anderes anzuordnen:
[highlight=Java]String[] names = new String[] {medium.getName()};
ArrayList<String> listOfNames = new ArrayList<String>(Arrays.asList(names));
String[] content = new String[] {medium.getContent()};
ArrayList<String> listOfContent = new ArrayList<String>(Arrays.asList(content));
String[] places = new String[] {medium.getPlace()};
ArrayList<String> listOfPlaces = new ArrayList<String>(Arrays.asList(places));
int[] pieces = new int[] {medium.getPieces()};
ArrayList<int[]> listOfPieces = new ArrayList<int[]>(Arrays.asList(pieces));
double[] prices = new double[] {medium.getPrice()};
ArrayList<double[]> listOfPrices = new ArrayList<double[]>(Arrays.asList(prices));
String[] cathegories = new String[] {String.format("%s", medium.getCathegory())};
ArrayList<String> listOfCathegories = new ArrayList<String>(Arrays.asList(cathegories));
String[] mediatypes = new String[] {String.format("%s", medium.getMediatype())};
ArrayList<String> listOfMediatypes = new ArrayList<String>(Arrays.asList(mediatypes));
String[] all = new String[] {String.format("%s, %s, %s, %s, %s, %s, %s", listOfNames,
listOfContent,
listOfPlaces,
listOfPieces,
listOfPrices,
listOfCathegories,
listOfMediatypes)};
ArrayList<String> list = new ArrayList<String>(Arrays.asList(all));[/highlight]
Nur leider werden die Zahlen jetzt nicht mehr angezeigt und irgendwie glaube ich auch nicht, dass durch die Strukturierung mein Problem mit dem nicht verwenden können von add() für int bzw. double gelöst sein wird.
Wäre nett, wenn vllt. jemand einen Blick auf den Code werfen könnte, denn ich sitze eine halbe Ewigkeit dran und komme beim besten Willen nicht mehr weiter :/