Array-Programm für Safe-Kombination

Dose

Mitglied
Hallo zusammen
mein Kollege und ich müssen für unser Studium ein Programm in Java schreiben!Leider haben wir absolut keine Ahnung wie wir anfangen bzw zu einem Ende kommen!
Hier mal die Anweisung:
Richten sie ein Array mit drei Ziffern zum Öffnen eines Safes ein. Fordern Sie den Benutzer auf, nacheinander drei Ziffern über die Schaltflächen mit den Bezeichnungen 0 bis 4 einzugeben. Wenn eine Ziffer eingegeben wird, dann teilen Sie dem Benutzer mit, ob sie richtig oder falsch ist, und geben Sie ihm drei Versuche, bevor der wieder von vorne anfangen muss.

Wir haben angefangen das ganze in ein Formular zu packen aber irgendwie kommen wir ingesamt auf keinen grünen Zweig.
Wir hoffen das ihr uns helfen könnt und sagen schon mal Herzlichen Dank
 
Zuletzt bearbeitet von einem Moderator:
B

bygones

Gast
zeig doch mal code ... bzw ein paar konkrete Fragen würden helfen zu helfen

"ganze in ein Formular"... das klingt merkwürdig - redest du von Java oder JavaScript ?!
 

Wrakas

Mitglied
Ihr braucht 4 Buttons, daran hängt ihr einen Event Handler der für alle Buttons zuständig ist. Bei Click eines Buttons prüft ihr welcher das war, vergleicht z.B. erster Button 0 mit dem ersten Array Eintrag.

Wenn richtig dann weiter (und merken das er die erste Zahl richtig hat, damit beim nächsten Button klick die zweite Array Zahl verglichen wird)

Wenn falsch anzahl der Versuch merken.

... and so on ...
 

Dose

Mitglied
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * safeneuer.java
 *
 * Created on 12.01.2011, 16:37:21
 */

package safeneuer;

/**
 *
 * @author dose
 */
public class safeneuer extends javax.swing.JApplet {

    /** Initializes the applet safeneuer */
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();

        getContentPane().setLayout(null);

        jButton1.setText("1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(10, 20, 75, 29);

        jButton2.setText("2");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton2);
        jButton2.setBounds(180, 20, 75, 29);

        jButton3.setText("3");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton3);
        jButton3.setBounds(10, 70, 75, 29);

        jButton4.setText("4");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton4);
        jButton4.setBounds(180, 70, 75, 29);
    }// </editor-fold>                        

private int Kombination = 321;
private int [] Raten;
private int [] Reihenfolge;
private int Fehlversuche;


    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        // TODO add your handling code here:
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        


}

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    // End of variables declaration                   

}
 
T

Tomate_Salat

Gast
Immerhin haste den GUI-Editor gefunden :-/.
Konventionen:
für Klassen verwendet man UpperCamelCase:
safeneuer => SafeNeuer
für Variablen lowerCamelCase:
Kombinationen => kombinationen

richten sie ein Array mit drei Ziffern zum Öffnen eines Safes ein
Java:
private int[] kombination = {3,2,1};

Ansonsten: Du holst dir den Wert aus einem Textfeld, prüfst ob es eine Zahl und diese im validen Bereich ist + checkst Sie mit dem Wert im Array (denke daran: kombinationen[0] ist 3 und kombinationen[2] ist 1).

Wenn du mehr Hilfe brauchst: frag gezielter nach. So ist das noch viel zu Allgemein gehalten, deswegen auch nur eine allgemeine Antwort

mfg

Tomate_Salat
 

Dose

Mitglied
Danke für die nützlichen Tipps erstmal
-Wie hole ich mir den Wert aus einem Textfeld?
-Wie prüfe ich ob es eine Zahl ist und ob sie im angegeben Bereich liegt?
-Wie checke ich die Zahl mit dem Wert im Array?
Sorry wir sind die absoluten Frischlinge und ich hab des gefühlt das wir von unserem Prof ziemlich
alleine gelassen werden!
Gott sei Dank wird uns hier geholfen, echt super von euch!
 
T

Tomate_Salat

Gast
erstmal eine Gegenfrage: ist ein GUI pflicht oder tut es ein Konsolenprogramm...weil wenn ein GUI keine Pflicht ist....lass die Finger davon. Eignet euch Grundlagen an, bevor Ihr euch mit GUIs beschäftigt.
 

Wrakas

Mitglied
Ich habe es mal ohne Textfeld gemacht... (wie die Aufgabe beschrieben ist)

Java:
import java.awt.FlowLayout;
import java.awt.event.*;

import javax.swing.*;

public class save {
	int[] code = {3,2,1};
	int richtige = 0;
	int falsche = 0;
	boolean berechtigt = true;
	
	JLabel lblAnweisung;
	
	public static void main(String[] args) {
		save gui = new save();
		gui.start();
	}
	
	public void start(){
		
		JFrame fenster = new JFrame();
		lblAnweisung = new JLabel("Bitte Code eingeben!");
		JButton btnNull = new JButton("0");
		JButton btnEins = new JButton("1");
		JButton btnZwei = new JButton("2");
		JButton btnDrei = new JButton("3");
		JButton btnVier = new JButton("4");
		
		ButtonLauscher Lauscher = new ButtonLauscher();
		
		btnNull.addActionListener(Lauscher);
		btnEins.addActionListener(Lauscher);
		btnZwei.addActionListener(Lauscher);
		btnDrei.addActionListener(Lauscher);
		btnVier.addActionListener(Lauscher);
		
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenster.setLayout(new FlowLayout());
		
		fenster.getContentPane().add(lblAnweisung);
		fenster.getContentPane().add(btnNull);
		fenster.getContentPane().add(btnEins);
		fenster.getContentPane().add(btnZwei);
		fenster.getContentPane().add(btnDrei);
		fenster.getContentPane().add(btnVier);
		fenster.setSize(500,80);
		fenster.setVisible(true);
	}
	class ButtonLauscher implements ActionListener{
		public void actionPerformed(ActionEvent event){
			int eingabe = Integer.parseInt(event.getActionCommand());
			
			if (berechtigt){
				if(code[richtige] == eingabe){
					richtige++;
					if(richtige<3){
						lblAnweisung.setText(richtige + " Richtig; " + falsche + " Falsch");
					}else{
						lblAnweisung.setText("Der Code ist richtig");
					}
				}else{
					falsche++;
					if(falsche<3){
						lblAnweisung.setText(richtige + " Richtig; " + falsche + " Falsch");
					}else{
						lblAnweisung.setText("3 mal falsch eingegeben bitte neu starten");
						berechtigt = false;
					}
				}
			}

		}
	}
}
[/Java]
 
T

Tomate_Salat

Gast
Konventionen:
für Klassen verwendet man UpperCamelCase:
safeneuer => SafeNeuer
für Variablen lowerCamelCase:
Kombinationen => kombinationen

So schwer sind die auch nicht einzuhalten :noe:. Als wie wenn ich es nie in diesem Thread gepostet hätte:
save => Save
Lauscher => lauscher

und das GUI sollte man über
Java:
SwingUtilities.invokeLater(new Runnable() {
     @Override
     public void run()
     {
           fenster.setVisible(true);
     }
});
starten
 

Wrakas

Mitglied
So schwer sind die auch nicht einzuhalten :noe:. Als wie wenn ich es nie in diesem Thread gepostet hätte:
save => Save
Lauscher => lauscher

und das GUI sollte man über
Java:
SwingUtilities.invokeLater(new Runnable() {
     @Override
     public void run()
     {
           fenster.setVisible(true);
     }
});
starten

Was soll das, wenn ich mich hinsetze und einen Code schreibe der mich nicts angeht will ich dafür nicht noch blöd angeschrieben werden ...
 
T

Tomate_Salat

Gast
Was soll das, wenn ich mich hinsetze und einen Code schreibe der mich nicts angeht will ich dafür nicht noch blöd angeschrieben werden ...

Es geht nicht darum, andere die Hausaufgaben zu machen, sondern Ihnen zu helfen. Insofern ists mir egal ob du dich da hinsetzt und diese machst ;). Zum anderen: reg dich ab, nimms einfach als konstruktive Kritik und gut ists.
 

Dose

Mitglied
Erstmal tausend Dank für den Code wrakas
Mit welchem Programm hast du programmiert?
Wir müssen Netbeans benutzt, hoffe dass der Code
kompatibel ist
Aber nochmal herzlichen Dank für deine Mühen
 

Dose

Mitglied
ok dann hab ich wahrscheinlich einen Fehler gemacht, weil Netbeans mir nämlich in Zeile 18
folgendes sagt: class save is public, should be declared in a file named save.java
ich hab eins neues projekt mit einer Java-Anwendung geöffnet und dann JFrame-Formular gewählt
 
T

Tomate_Salat

Gast
nenne die datei save.java, dann sollte es gehen. Oder in Save.java und bennen die Klasse mittels Refractoring in Save um
 

Dose

Mitglied
Hast du das Programm im GUi-Editor geschrieben?Bei unserem Code haben wir die vier Buttons ja quasi von
Hand eingefügt. Da sieht der Code dann vermutlich ganz anders aus oder Wrakas?
 

Neue Themen


Oben