Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
Ich hab mal ne Frage:
Wenn ich einen Stack mit 2 belibigen werten drinnen hab, z.B. 0,31 und 0,49, wie lautet dann der Code um beide zusammenzurechnen und z.B. als String "Ergebnis" abzuspeichern.
(Annahme das du mit Stack die Klasse java.util.Stack meinst)
Du addierst das Ergebnis vom 1. pop()-Aufruf zum 2. pop()-Aufruf und rufst darauf String.valueOf(...) auf. Wo ist das Problem?
Kann es sein, dass du gerade so ... mittendrin anfängst? Ich meine nicht nur die Analyse des Problems, sondern auch, was deine Erfahrungen im Umgang mit den benutzten Strukturen angeht!?
Das gibt an, welche Objekte auf den Stapel gelegt werden können, hier also nur Objekte vom Typ Double. Ein anderes Beispiel wäre eine Liste für Strings:
Java:
ArrayList<String> myList = new ArrayList<String>();
Wenn man dann versucht, etwas anderes als String der Liste hinzuzufügen, gibt es eine Fehlermeldung. Man kann also sagen, daß es angibt, was in einem anderen Objekt, also beispielsweise einem Stapel oder einer Liste, enthalten sein kann. Das sollte Dir als Information reichen, alles andere ist vorerst zu kompliziert. Der Vollständigkeit halber sei hier dennoch ein Link zur Sun-Dokumentation über allgemeine (generische) Typen erwähnt: Lesson: Generics
int size = warenkorb.size();
String sum = "0";
for (int i = 0; i < size; i++) {
sum += warenkorb.pop();
}
JOptionPane.showMessageDialog (null, "Zu zahlen:"+ sum + "€");
}
}
Damit kriege ich Ergebnisse wie z.B. 0,490,49 wenn der wert 0,49 ist und ich in zwei mal in den stack tue. Ich will aber gerne 0,98 da stehen haben.
package stack;
import java.util.Stack;
import java.lang.NullPointerException;
import javax.swing.*;
import java.util.EmptyStackException;
public class stacks1 {
public static void main(String[] args) {
String Apfel = "0,49";
String Kaugummi = "0,29";
String Pflaume = "0,29";
String Banane = "0,39";
String Orange = "0,51";
Stack warenkorb = new Stack();
try{
for(int Nr = 1; Nr <= 1000000000;Nr++)
{
String Produkt = JOptionPane.showInputDialog("Wählen sie ihr Produkt. Zurzeit auf Lager sind:\nApfel\nKaugummi\nPflaume\nBanane\nOrange\nBitte Groß- und Kleinschreibung beachten!\nUm zur Kasse zu gehen drücken sie auf Abbrechen");
if (Produkt.equals("Apfel"))
warenkorb.push(Apfel);
if (Produkt.equals("Kaugummi"))
warenkorb.push(Kaugummi);
if (Produkt.equals("Pflaume"))
warenkorb.push(Pflaume);
if (Produkt.equals("Banane"))
warenkorb.push(Banane);
if (Produkt.equals("Orange"))
warenkorb.push(Orange);
}
}
catch(NullPointerException n){
int size = warenkorb.size();
String sum = "0";
for (int i = 0; i < size; i++) {
sum += warenkorb.pop();
}
JOptionPane.showMessageDialog (null, "Zu zahlen:"+ sum + "€");
}
}}
int size = warenkorb.size();
Double sum = 0.0;
for (int i = 0; i < size; i++) {
sum += warenkorb.pop();
}
JOptionPane.showMessageDialog (null, "Zu zahlen:"+ sum + "€");
}
}
int size = warenkorb.size();
Double sum = 0.0;
for (int i = 0; i < size; i++) {
sum += Double.parseDouble(warenkorb.pop());
}
JOptionPane.showMessageDialog (null, "Zu zahlen:"+ sum + "€");
}
}
ohweia ;D
geändert u.a.:
-stack mit generics !!!
-Strings (String Apfel = "0.49" )
- sum += ....value ist doch schon ein double
-JOptionPane.showMessageDialog ausserhalb der schleife !
so läufts zumindestens glaub ich so, wie du dir das vorstellst, allerdings ist der gesamte aufbau ein wenig komisch (u.a. die berechnung/abbruch in dem auffang der nullpointerexception zu machen ???:L)
Java:
import java.util.Stack;
import java.lang.NullPointerException;
import javax.swing.*;
public class stacks1 {
public static void main(String[] args) {
String Apfel = "0.49";
String Kaugummi = "0.29";
String Pflaume = "0.29";
String Banane = "0.39";
String Orange = "0.51";
Stack<String> warenkorb = new Stack<String>();
try {
for (int Nr = 1; Nr <= 1000000000; Nr++) {
String Produkt = JOptionPane
.showInputDialog("Wählen sie ihr Produkt. Zurzeit auf Lager sind:\nApfel\nKaugummi\nPflaume\nBanane\nOrange\nBitte Groß- und Kleinschreibung beachten!\nUm zur Kasse zu gehen drücken sie auf Abbrechen");
if (Produkt.equals("Apfel"))
warenkorb.push(Apfel);
if (Produkt.equals("Kaugummi"))
warenkorb.push(Kaugummi);
if (Produkt.equals("Pflaume"))
warenkorb.push(Pflaume);
if (Produkt.equals("Banane"))
warenkorb.push(Banane);
if (Produkt.equals("Orange"))
warenkorb.push(Orange);
}
} catch (NullPointerException n) {
Double sum = 0.0;
while (!warenkorb.isEmpty()) {
try {
double value = Double.parseDouble(warenkorb.pop());
sum += value;
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,
"Ein Fehler ist aufgetreten");
}
}
JOptionPane.showMessageDialog(null, "Zu zahlen:" + sum + "€");
}
}
}
/edit: klein bisschen refactoring?! ;D :
Java:
import java.util.Stack;
import javax.swing.*;
public class stacks1 {
static Stack<String> warenkorb;
public static void main(String[] args) {
String Apfel = "0.49";
String Kaugummi = "0.29";
String Pflaume = "0.29";
String Banane = "0.39";
String Orange = "0.51";
warenkorb = new Stack<String>();
while(true) {
String Produkt = JOptionPane
.showInputDialog("Wählen sie ihr Produkt. Zurzeit auf Lager sind:\nApfel\nKaugummi\nPflaume\nBanane\nOrange\nBitte Groß- und Kleinschreibung beachten!\nUm zur Kasse zu gehen drücken sie auf Abbrechen");
if (Produkt == null)
break;
if (Produkt.equals("Apfel"))
warenkorb.push(Apfel);
if (Produkt.equals("Kaugummi"))
warenkorb.push(Kaugummi);
if (Produkt.equals("Pflaume"))
warenkorb.push(Pflaume);
if (Produkt.equals("Banane"))
warenkorb.push(Banane);
if (Produkt.equals("Orange"))
warenkorb.push(Orange);
}
JOptionPane.showMessageDialog(null, "Zu zahlen:" + getBill() + "€");
}
public static double getBill() {
Double sum = 0.0;
while (!warenkorb.isEmpty()) {
try {
sum += Double.parseDouble(warenkorb.pop());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null,
"Ein Fehler ist aufgetreten");
}
}
return sum;
}
}