werte in array speichern

  • Themenstarter Themenstarter dofa
  • Beginndatum Beginndatum
D

dofa

Gast
hallo leute, ich hab ein kleines problem:

ich hab eine klasse geschrieben in der man aktionen wie bei einer bank durchführen kann (abheben, gutschreiben, kontostand abfragen usw).

Java:
public class KontoPlus{	

	        // ich muss irgendwie die eingegeben werte bei "gutschreiben" und "abbuchen" speichern, damit ich sie am ende bei
                //"kontoauszug" wieder auflisten kann. die werte würd ich gern in dem array "veraenderung" speichern. wie mach ich 
                //das?

		private double kontostandNeu = 0;
		private double kontostandAlt = 0;
		private double kontostand = 0;
		private double[] veraenderung = new double[10];
		private double wert = 0;
			
		public void gutschreiben(double betrag){
			if (betrag >= 0.0){
				kontostandNeu = kontostand + betrag;
				kontostand = kontostandNeu;				
			}
			else
				System.out.println("gutschreiben unzulaessig");				
		}
		
		public void abbuchen(double betrag){	
			if (betrag >= 0.0 && betrag <= kontostand){
				kontostandNeu = kontostand + (-betrag);
				kontostand = kontostandNeu;				
			}				
			else
				System.out.println("abbuchen unzulaessig");				
		}
		
		public double abfragen(){
			return kontostand;
		}

		public void kontoauszug(){
			System.out.println("Alter Kontostand: " + kontostandAlt);			
			System.out.print("Veraenderung:");
			for (int i = 0; i <10; i++){
				veraenderung[i] = wert;
			System.out.print(" " + veraenderung[i]);
			}
			System.out.println();
			System.out.println("Neuer Kontostand: " + kontostandNeu);
			kontostandAlt = kontostandNeu;
		}		
	}
 
Java:
import java.util.*;

public class KontoPlus{ 

		private List<String> history = new ArrayList<String>();
		// ...
		
        public void abbuchen(double betrag){
            if (betrag >= 0.0 && betrag <= kontostand){
            	history.add("Lastschrift: -" + betrag);
            	// ...

sowas vllt?
 
Das ist eine Collections. Hier explizit eine ArrayList. Das ist im Grunde intern nichts anderes als ein Array. Extern hat es einen ganz entscheidenden Unterschied: eine ArrayList ist dynamisch.

Google mal Java Collections. Da wirst du einiges finden und auch merken, dass es garnicht so kompliziert ist 😉.

z.B.: http://www.inabrenner.de/pdf/SCJP.pdf Kapitel 12
 
wenn ich das jetzt so mache wie du geschrieben hast, kann ich die arrayliste dann ganz normal mit ner for-schleife ausgeben?
 
Was ist für dich ganz normal?

history.lenght bzw history[0] geht nicht

Die Liste hat Methoden wie size() und get();

also for(int i = 0; i < history.size(); i++){
history.get(i);
usw..
 
so hats jetzt auf jeden fall funktioniert.

jetzt müsste ich nur noch die arraylist nach dem "kontoauszug" wieder zurücksetzen, damit nicht beim nächsten auszug die alten inhalte angezeigt werden.
 
eine kleinigkeit noch:

beim compilieren kommt eine bemerkung: "KontoPlus.java uses unchecked or unsafe operations.
recompile with -Xlint: unchecked for details."

wenn ich dann mit -Xlint compilieren, kommt eine warnung: "unchecked call to add(E) as a member
of the raw type java.util.ArrayList
history.add(betrag);

keine ahnung was das soll, trotzdem kann ich das programm ohne probleme ausführen.
 
genau die fehlermeldung.

ich hab das so gemacht:
Java:
// initialisierung
private ArrayList history = new ArrayList();

// dann bei z.b. "abbuchen"
if (betrag >= 0.0 && betrag <= kontostand){
				kontostandNeu = kontostand + (-betrag);
				kontostand = kontostandNeu;
                                history.add(betrag); //eingegebenen betrag hinzufügen

// schleife um die liste auszugeben
for (int i = 0; i < history.size(); i++){
				System.out.print(" " + history.get(i));
 
Du willst doch Strings in deiner Liste speichern oder nicht? Das ist einfach eine generische Instanziierung einer Liste. Genauso wie du ein Array mit String typisierst machst du das bei Listen auch. Nur eben eine bisschen andere Syntax.

Google mal: Generics Java
 
jetzt zeigt der mir aber einen fehler bei 'history.add(betrag)' an.

cannot find symbol
symbol: method add (double)

obwohl der code jetzt exakt deinem beispiel entspricht.
 
jetzt zeigt der mir aber einen fehler bei 'history.add(betrag)' an.

cannot find symbol
symbol: method add (double)

obwohl der code jetzt exakt deinem beispiel entspricht.

Ist ja wohl klar wenn du einen double in einer Liste speichern willst, die du explizit für String eingerichtet hast ;-)
ArrayList<String> ist halt nicht dasselbe wie ArrayList<Integer>
 
Java:
import java.util.*;
	public class KontoPlus{
	
	
		private double kontostandNeu = 0;
		private double kontostandAlt = 0;
		private double kontostand = 0;
		private double betrag;
		private List<String> history = new ArrayList<String>();
					
		public void gutschreiben(double betrag){
			if (betrag >= 0.0){
				kontostandNeu = kontostand + betrag;
				kontostand = kontostandNeu;
				history.add("" + betrag);
			}
			else
				System.out.println("gutschreiben unzulaessig");				
		}		
		public void abbuchen(double betrag){	
			if (betrag >= 0.0 && betrag <= kontostand){
				kontostandNeu = kontostand + (-betrag);
				kontostand = kontostandNeu;
				history.add("" + betrag);
			}				
			else
				System.out.println("abbuchen unzulaessig");
                }
		
		public double abfragen(){
			return kontostand;
		}
		public void kontoauszug(){
			System.out.println("Alter Kontostand: " + kontostandAlt);			
			System.out.print("Veraenderung:");
			for (int i = 0; i < history.size(); i++){
				System.out.print(" " + history.get(i));
			}
			System.out.println();
			System.out.println("Neuer Kontostand: " + kontostandNeu);
			kontostandAlt = kontostandNeu;
			history = new ArrayList();			
		}		
	}
 
na endlich funktionierts!

lag tatsächlich nur an dem vergessenen "<String>".

vielen dank an alle 🙂
 

Zurück
Oben