# Projektarbeit Zahlensalat programmieren mit NetBeans



## MrWuff (26. September 2008)

Hallo,

ich habe ein riesiges Problem.  
Bin in der Ausbildung zum IT-Systemelektroniker und muss in AWE mit dem Programm NetBeans ein Zahlenrätsel erstellen.
Da ich Umschüler bin und keinerlei Programmierkenntnisse habe, ist diese Aufgabe für mich absolut nicht lösbar! 

Das Rätsel besteht aus einem Zahlensalat.

Es muss eine Reihe von fast (bestimmte müssen enthalten sein) willkürlichen Dezimalzahlen Generiert werden und der Spieler soll dann eine vorgegebene Zahl zB. 112 in diesem Zahlensalat finden.

Ein Beispiel:
1354343543423135112435416769432110641229112853468716
Wie Oft ist die 112 in dieser Kette enthalten? = 2 mal

Wie mache ich das? 
Oder kann mir das jemand machen? 
Denke wer sich 100% damit auskennt hat das in 5 Min fertig oder? 

Wäre echt super wenn mir jemand helfen würde.

Gruß Wuffi


----------



## Andibert (26. September 2008)

Mache aus den Zahlen Strings

Erzeuge einen Langen String der aus einzelnen zufälligen strings besteht.

ersetze an zufällligen stellen im string die dort existierenden ziffern durch deine Zahl(als String natürlich)

dann noch mit ner selbst geschriebenen Methode einmal durch deine lange Ziffernkette suchen wie oft deine Zahl jetzt tatsächlich enthalten ist (könnte ja auch zufällig drin sein).

um die passenden Methoden zu finden rate ich dir in der Java API mal die Klasse String anzuschauen. Dort sollte es auch einen Link auf ein Tutorial zum thema Strings geben. In der JavaInsel gibt es AFAIK auch nen Kapitel über Strings.

P.S.: Die meisten Programmierneulinge blockieren sich mit der Einstellugn "Das schaff ich doch nie!" selbst. Unterteil dir dein Problem in kleine Teilprobleme und du wirst feststellen es löst sich Stück für Stück


----------



## d4ex (26. September 2008)

So würde meine Lösung aussehen... gibt halt noch einige Sachen die man einfügen könnte wie z.B. das mit dem selben Zahlensalat weitergespielt wird oder man den Zahlensalat vorher sieht o.ä aber funktioniert.


```
/*
 * Zahlen Salat
 */

package zahlensalat;

import javax.swing.JOptionPane;

/**
 *
 * @author Matthias
 */
public class Main {


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //Läge auf 40 begrenzt... könnte man noch durch eingabe ändern
        int[] zahlensalat = new int[40];
        
        //Zwischenspeicher für Zufallszahl
        int random = 0;
        //int array mit Zufallszahlen füllen
        for(int i=0; i<zahlensalat.length; i++){
            //Zufallszahl erzeugen und zuweisen
            random = (int)(Math.random()*10);            
            zahlensalat[i] = random;
        }        
        //Eingabe der Zahl des Spielers
        String eingabe=JOptionPane.showInputDialog("Bitte eine zahl eingeben.");        
        //Die eingegebene Zahl in einzelne Teile zerlegen und in ein Array füllen
        int[] iEingabe = new int[eingabe.length()];
        for(int j=0; j<eingabe.length(); j++){
            iEingabe[j] = Integer.parseInt(eingabe.charAt(j)+"");
        }
        
        ausgabe(zahlensalat, iEingabe);
    }

    //Gibt alles aus
    public static void ausgabe(int[] zahlensalat, int[] eingabe){
        //Zahlensalat in output schreiben
        String output="Zahlensalat: ";
        for(int j=0; j<zahlensalat.length; j++){
            output+=""+zahlensalat[j];
        }
        output+="\nEingabe: ";        
        for(int i=0; i<eingabe.length; i++){
            output+=eingabe[i];
        }
        output+="\nEingabe ist "+check(zahlensalat, eingabe)+"-mal vorhanden!";
        //Eingabe in output schreiben
        JOptionPane.showMessageDialog(null, output);
    }
    
    //Prüft wie oft Zahl vorhanden ist
    public static int check(int[] zahlensalat, int eingabe[]){
        //Zählt wie oft eine Zahl vorhanden ist
        int zaehler=0;
        for(int i=0; i<zahlensalat.length; i++){
            //Wenn die erste Zahl der eingabe trifft dann den Rest prüfen
            if(eingabe[0] == zahlensalat[i]){
                for(int j=0; j<eingabe.length; j++){
                    if(eingabe[j] != zahlensalat[i+j]) break;
                    if(j==eingabe.length-1) zaehler++;
                }
            }
        }
        
        return zaehler;
    }
}
```
P.S. Wenn du dich ein wenig mit den Methoden der Klasse String beschäftigst wie der Kollege oben schon geschrieben hat dann ist das nicht mehr so schwer


----------



## Andibert (30. September 2008)

Jo,

Ist ne vernünftige Lösung.

Ich würde den Ausgabestring mit nem Stringbuffer machen, da du dir ja für jedes anhängen mit + nen neuen String erstellst, produzierst du da ein bisschen viel overhead.

Sonst kann ich nichts zum meckern dran finden.

Andibert


----------



## MrWuff (17. Februar 2009)

Hallo
besser spät als nie, aber nun habe ich endlich diese Seite wiedergefunden

Danke euch für eure Mühe, habe ne 5 bekommen. :-(
darf ich euch noch zu der neuen Aufgabe in AWE befragen? Diesmal bleibe ich auch am Ball versprochen.

Gruß Wuffi


----------

