Arraylist zu einem Array bringen mit Verschachtelung

Panda9296

Bekanntes Mitglied
Hi leutz:

Ich möchte einen Taschenrechner mit unendlich vielen Eingabeoptionen als teilmodul in mein Programm hinzufügen. Ich möchte sagen, dass der Pc mir bitte eine ArrayListe anlegen soll, da ich ja nicht weiß, wie viele Eingaben tatsächlich kommen.

Ich habe allerdings Probleme dabei. Ich sitze schon seit Tagen daran und suche eine Lösung. Kurz noch zum Design ich habe 2 Klassen: eine für Funktionen und eine Für die main. Der Plan ist sozusagen, dass ich die Arraylist in ein Array speichere, welches ich als Double parameter in die Funktion gebe. Ich habs irgendwie nicht richtig verstanden. Wie sage ich ihm, dass die Parameteranzahl variabel ist und wie kann ich das Problem in der angehängten Datei lösen. Ich bitte um ausführliche erklärung. Ich habe eine umschulung zum Anwendungsentwickler bekommen, kann aber schon gewisse Grundlagen in java und möchte diese auch ausbauen.
 

Anhänge

Hi leutz:

Ich möchte einen Taschenrechner mit unendlich vielen Eingabeoptionen als teilmodul in mein Programm hinzufügen. Ich möchte sagen, dass der Pc mir bitte eine ArrayListe anlegen soll, da ich ja nicht weiß, wie viele Eingaben tatsächlich kommen.

Ich habe allerdings Probleme dabei. Ich sitze schon seit Tagen daran und suche eine Lösung. Kurz noch zum Design ich habe 2 Klassen: eine für Funktionen und eine Für die main. Der Plan ist sozusagen, dass ich die Arraylist in ein Array speichere, welches ich als Double parameter in die Funktion gebe. Ich habs irgendwie nicht richtig verstanden. Wie sage ich ihm, dass die Parameteranzahl variabel ist und wie kann ich das Problem in der angehängten Datei lösen. Ich bitte um ausführliche erklärung. Ich habe eine umschulung zum Anwendungsentwickler bekommen, kann aber schon gewisse Grundlagen in java und möchte diese auch ausbauen.
Erste Anmerkung von mir, bitte poste deinen Code in Code Klammern 😉 Click auf die drei Punkte 🙂

Zu deiner Frage, ich verstehe nicht was genau jetzt dein Problem ist? Wieso solltest du eine ArrayList in ein Array speichern wollen?
 
Zuletzt bearbeitet:
Code:
public static void main(String[]args) throws IOException {
        
        int auswahl;
        boolean abfrage;
        
        System.out.println("Taschenrechnermodul");
         Scanner sc = new Scanner(System.in);                            //Input
          ArrayList<Double>Kontrollliste = new ArrayList<>();           
           System.out.println("Bitte geben Sie Ihre erste Zahl ein");
             Kontrollliste.add(0, sc.nextDouble());               
            
            for(int i=0;i<Kontrollliste.size();i++) {
                System.out.println("Noch eine Zahl?");
                abfrage = sc.nextBoolean();
                if(abfrage) {
                    
                    Kontrollliste.add(sc.nextDouble());
                    Double[]var=list.toArray(new Double[list.size()];
                }else {
                    System.out.println("Danke für Ihre Variablen");
                      System.out.println("Drücken Sie....(1)Addieren(2)Subtraieren(3)Multiplizieren(4)Dividieren");
                       auswahl = sc.nextInt();
                      
                switch(auswahl) {
                
              
                }   
            }



                
    }

    
        
    }
}
 
Also Du hast alle Zahlen doch in der ArrayList Kontrollliste (Hinweis: Variablen werden klein geschrieben!) Daher ist es nicht nötig, da noch ein Array zu erstellen.

Also einfach diese Zeile mit dem Double[] var komplett heraus nehmen. In dem Switch kannst Du dann die ArrayList nutzen um die Zahlen zu verarbeiten.
 
Du hast einige Fehler in deinem Code:

Java:
Double[]var= list.toArray(new Double[list.size()];
Die Variable "list" existiert nirgends in deinem Code

Edit: @JustNobody war schneller 🙂
 
Erste Anmerkung von mir, bitte poste deinen Code in Code Klammern 😉 Click auf die drei Punkte 🙂

Zu deiner Frage, ich verstehe nicht was genau jetzt dein Problem ist? Wieso solltest du eine ArrayList in ein Array speichern wollen?
tut mir leid gerade in der Schule und mit Excel beschäftigt gewesen ^^ .Das ist nicht viel also das Auswahlmenü ist klar mit den cases. Ein case für jede Funktion und diese sind von mir in eine Extraklasse gesetzt. das Problem ich habe standardmäßig nur 2 Parameter wie sag ich ihm das über einen Construktor ? ( also dieses Problem muss nicht geantwortet werden. Mir wäre es wichtig zu verstehen wie ich das mit der Arraylist machen kann
 
tut mir leid gerade in der Schule und mit Excel beschäftigt gewesen ^^ .Das ist nicht viel also das Auswahlmenü ist klar mit den cases. Ein case für jede Funktion und diese sind von mir in eine Extraklasse gesetzt. das Problem ich habe standardmäßig nur 2 Parameter wie sag ich ihm das über einen Construktor ? ( also dieses Problem muss nicht geantwortet werden. Mir wäre es wichtig zu verstehen wie ich das mit der Arraylist machen kann
Naja also wenn du zwei Parameter übergeben möchtest, muss der Konstruktor ebenfalls zwei Parameter enthalten:

Java:
methode("Hallo", 2);   // <--- static methoden aufruf, wenn du Methoden von anderen Klassen benutzen möchtest, musst du über eine Objektinstanz gehen

#########################

public void methode(String word, int number){}


Mit Objektinstanz würde es so aussehen:

Java:
Class3 klasse = new Class3();
klasse.methode("Hallo", 3);

##################
public Class3{
    
    public void methode(String word, int number){}
}
 
Naja also wenn du zwei Parameter übergeben möchtest, muss der Konstruktor ebenfalls zwei Parameter enthalten:

Java:
methode("Hallo", 2);   // <--- static methoden aufruf, wenn du Methoden von anderen Klassen benutzen möchtest, musst du über eine Objektinstanz gehen

#########################

public void methode(String word, int number){}
ja aber die Parameter.lenght ist je nach eingabe dynamsich deswegen wollte ich die ArrayList umwandeln weil ich sie nicht sinngemäß benutzen kann. Die arraylist ist ja aufgrund der dynamischen eingabe vorhanden sonst hätte ich auch ein array nehmen können. Ich habe das Gefühl dass ich eine verschachtelte For- Schleife brauche eine für den zähler und eine um den einzelnen wert rauszuholen. Ich sage ja wenn 2 eingaben kommen rechne mit der funktion addieren mit diesen 2 variablen, aber ich sage auch wenn 5 eingaben folgen dann berechne 5. Ich glaube aber er kann unter diesen Umständen nur 2 Variablen verrechnen
 
ja aber die Parameter.lenght ist je nach eingabe dynamsich deswegen wollte ich die ArrayList umwandeln weil ich sie nicht sinngemäß benutzen kann. Die arraylist ist ja aufgrund der dynamischen eingabe vorhanden sonst hätte ich auch ein array nehmen können. Ich habe das Gefühl dass ich eine verschachtelte For- Schleife brauche eine für den zähler und eine um den einzelnen wert rauszuholen. Ich sage ja wenn 2 eingaben kommen rechne mit der funktion addieren mit diesen 2 variablen, aber ich sage auch wenn 5 eingaben folgen dann berechne 5. Ich glaube aber er kann unter diesen Umständen nur 2 Variablen verrechnen
Ich verstehe halt nicht ganz was du vor hast xD

Also es hängt natürlich davon ab, ob du zu deinem Taschenrechner ein GUI baust oder es per Console machen möchtest.

Solltest du es mit einem GUI machen, würde ich es dir einfach empfehlen, durch den jeweiligen Button die Klasse zu instanzieren, welche du verwenden möchtest(Addition, Subtraktion,...) z.B. so:

Java:
        JButton btnAddition = new JButton("Addition");
        btnAddition.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                Addition nw = new Addition();
                nw.addiere();
            }
        });
        btnAddition.setBounds(485, 370, 77, 24);
        frame.getContentPane().add(btnAddition);

Solltest du es jedoch einfach per Console machen wollen, dann vergiss das mit dem GUI 🙂

Im Fall der Console, würde ich dir empfehlen es ähnlich zu machen wie du, also eine main(mit einem Switch für die Rechenoperationen) und eine Klasse mit den Rechenmethoden:

Java:
public class Calculator{
  
    public static void main(){
        Scanner sc = new Scanner(System.in);
        String temp = "";
        while(true){
            System.out.println("Welche Rechenoperation wollen sie durchführen?");
            temp = sc.nextLine();
            switch(temp){
                case temp.equals("Addition"):
                    Rufe Addition auf;
                    break;
                    .
                    .
                    .
            }
        }
    }
}

Bei der "while(true) müsstest du halt eine Abfrage machen ob du weitere eingaben machen möchtest und wenn nicht, mit einem "break" aus der Schleife springen, ansonsten ist es eine Endlosschleife
 
Die ArrayList ist doch in einer Variablen. Es ist eine ArrayList. Du kannst also diese eine ArrayList als ein Argument bei einer Methode aufrufen....
 
Ich verstehe halt nicht ganz was du vor hast xD

Also es hängt natürlich davon ab, ob du zu deinem Taschenrechner ein GUI baust oder es per Console machen möchtest.

Solltest du es mit einem GUI machen, würde ich es dir einfach empfehlen, durch den jeweiligen Button die Klasse zu instanzieren, welche du verwenden möchtest(Addition, Subtraktion,...) z.B. so:

Java:
        JButton btnAddition = new JButton("Addition");
        btnAddition.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                Addition nw = new Addition();
                nw.addiere();
            }
        });
        btnAddition.setBounds(485, 370, 77, 24);
        frame.getContentPane().add(btnAddition);

Solltest du es jedoch einfach per Console machen wollen, dann vergiss das mit dem GUI 🙂

Im Fall der Console, würde ich dir empfehlen es ähnlich zu machen wie du, also eine main(mit einem Switch für die Rechenoperationen) und eine Klasse mit den Rechenmethoden:

Java:
public class Calculator{
 
    public static void main(){
        Scanner sc = new Scanner(System.in);
        String temp = "";
        while(true){
            System.out.println("Welche Rechenoperation wollen sie durchführen?");
            temp = sc.nextLine();
            switch(temp){
                case temp.equals("Addition"):
                    Rufe Addition auf;
                    break;
                    .
                    .
                    .
            }
        }
    }
}

Bei der "while(true) müsstest du halt eine Abfrage machen ob du weitere eingaben machen möchtest und wenn nicht, mit einem "break" aus der Schleife springen, ansonsten ist es eine Endlosschleife
Perfekt ja ein GUI wäre eigentlich sogar besser, weil es als Teilprogramm implementiert werden soll, aber ich werde es auch über die Konsole machen, um einfach zu lernen, wie ich die Objektorientierung gebacken kriege 😀. Ich danke dir over and out
 

Neue Themen


Zurück
Oben