Unbekannter Fehler

Lucaaa

Bekanntes Mitglied
Hallo!
Habe ein Programm geschrieben, dass Text mit der Rotationsverschlüsselung (auch bekannt als Cäsar-Verschlüsselung) verschlüsseln soll. Ich habe eine GUI und wollte nun die Methoden zum verschlüsseln schreiben. Erstmal um zu sehen ob es Funktioniert, habe ich gleich im Code den Text der Verschlüsselt werden soll definiert. (Später wenn es funktioniert dann mit Textfeldeingabe.) Ich habe nun folgendes Problem: Habe den Code, in eclipse wird auch kein Fehler angezeigt, aber wenn ich es starten will, wird in der Konsole irgendwas von exeption at line 14 und line 68 angezeigt.
Bitte um Hilfe, finde einfach keinen Fehler.

Code:
Java:
package de.luca.java.rotcrypt;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class gui extends JFrame{
  private JTextField textfield;
  private JTextField textfield2;
  private JTextField textfield3;
 
 public static void main(String[] args) {
   new gui();
  }
  
  public gui(){
   super("Rotationsverschlüsselung");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    getContentPane().setLayout(null);
    setResizable(false);
    setAlwaysOnTop(true);
   textfield = new JTextField();
    textfield.setBounds(5, 30, 290, 25); // geht bis 300
    getContentPane().add(textfield);
    
  textfield2 = new JTextField();
    textfield2.setBounds(305, 30, 285, 25);
    getContentPane().add(textfield2);
    
    
    
   textfield3 = new JTextField();
    textfield3.setBounds(270, 60, 30, 20);
    getContentPane().add(textfield3);
    textfield3.setText("2");
    textfield.setText("test");
   JButton button = new JButton("Text v*erschlüsseln");
    button.setBounds(335, 60, 225, 20);
    getContentPane().add(button);
   JLabel label = new JLabel("Zu verschlüsselnden Text eingeben:");
    label.setBounds(45, 5, 280, 20);
    getContentPane().add(label);
   JLabel label2 = new JLabel("Verschlüsselter Text");
  label2.setBounds(380, 5, 280, 20);
  getContentPane().add(label2);
    
   JLabel label3 = new JLabel("Um wie viele Stellen soll verschoben werden?");
    label3.setBounds(5, 60, 280, 20);
    getContentPane().add(label3);
   
   
   
   
    setLocation(50, 50);
    setSize(600, 117);
    setVisible(true);
    
    verschlüsselung();
  }
  
      String text = textfield.getText();
      String verschiebung = textfield3.getText();
      int offset = Integer.parseInt(verschiebung);
  
   public  void verschlüsselung() {
    if (offset >= 1 && offset <= 127) {
    char[] meinArray = text.toCharArray();
    char[] meinNeuesArray = verschluesseln(offset, meinArray);
    
    for (int i = 0; i < meinNeuesArray.length; i++) {
     System.out.println(meinNeuesArray[i]);
    }
    }
    
    
    
    
   }
   
   
   public static char[] verschluesseln(int offset, char[] charArray) {
   char[] cryptArray = new char[charArray.length];
   for (int i = 0; i < charArray.length; i++) {
    int verschiebung = (charArray[i] + offset) % 128;
    cryptArray[i] = (char) (verschiebung);
   }
   return cryptArray;
  }

}
 

Viktim

Bekanntes Mitglied
So müsste es klappen :)
Java:
public class gui extends JFrame {
  private static final long serialVersionUID = 1L;

  private JTextField textfield;
  private JTextField textfield2;
  private JTextField textfield3;

  private String text;
  private String verschiebung;
  private int offset;

  public static void main(String[] args) {
    new gui();
  }

  public gui() {
    super("Rotationsverschlüsselung");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    getContentPane().setLayout(null);
    setResizable(false);
    setAlwaysOnTop(true);
    textfield = new JTextField();
    textfield.setBounds(5, 30, 290, 25); // geht bis 300
    getContentPane().add(textfield);

    textfield2 = new JTextField();
    textfield2.setBounds(305, 30, 285, 25);
    getContentPane().add(textfield2);

    textfield3 = new JTextField();
    textfield3.setBounds(270, 60, 30, 20);
    getContentPane().add(textfield3);
    textfield3.setText("2");
    textfield.setText("test");
    JButton button = new JButton("Text v*erschlüsseln");
    button.setBounds(335, 60, 225, 20);
    getContentPane().add(button);
    JLabel label = new JLabel("Zu verschlüsselnden Text eingeben:");
    label.setBounds(45, 5, 280, 20);
    getContentPane().add(label);
    JLabel label2 = new JLabel("Verschlüsselter Text");
    label2.setBounds(380, 5, 280, 20);
    getContentPane().add(label2);

    JLabel label3 = new JLabel("Um wie viele Stellen soll verschoben werden?");
    label3.setBounds(5, 60, 280, 20);
    getContentPane().add(label3);

    setLocation(50, 50);
    setSize(600, 117);
    setVisible(true);

    verschlüsselung();
  }

  public void verschlüsselung() {
    verschiebung = textfield3.getText();
    offset = Integer.parseInt(verschiebung);
    if (offset >= 1 && offset <= 127) {
      text = textfield.getText();
      char[] meinArray = text.toCharArray();
      char[] meinNeuesArray = verschluesseln(offset, meinArray);

      for (int i = 0; i < meinNeuesArray.length; i++) {
        System.out.println(meinNeuesArray[i]);
      }
    }

  }

  public static char[] verschluesseln(int offset, char[] charArray) {
    char[] cryptArray = new char[charArray.length];
    for (int i = 0; i < charArray.length; i++) {
      int verschiebung = (charArray[i] + offset) % 128;
      cryptArray[i] = (char) (verschiebung);
    }
    return cryptArray;
  }

}
 

Viktim

Bekanntes Mitglied
Das Problem war, hier:
String text = textfield.getText();
String verschiebung = textfield3.getText();
int offset = Integer.parseInt(verschiebung);
Du hast diese Felder außerhalb einer Methode definiert, das heißt das was hinter dem gleich steht wird sofort nach dem Aufruf der Klasse gemacht. Da deine Textfelder zu dem Zeitpunkt aber noch nicht definiert waren (gui() wurde noch nicht aufgerufen) sind die Felder noch null.

EDIT: Desswegen schreibt man Felder (Variablen außerhalb von Methoden) immer ganz nach oben. Da sieht man sie auf den ersten Blick :D
 

Lucaaa

Bekanntes Mitglied
Okay aber in line 70 bei der for-Schleife gibt es irgendeinen Fehler. Außerdem möchte ich die Ausgabe im Textfield2 und nicht als System.out.println().
 

Robat

Top Contributor
gibt es irgendeinen Fehler
Das ist keine Fehlerbeschreibung. So kann dir auch keiner helfen.
Was genau kommt denn dort für ein Fehler? Der Code sieht richtig aus..

Wenn du die Ausgabe im TextFeld möchtest, dann musst du ihm das auch noch sagen.

Am besten also deinem Button einen ActionListener hinzufügen und dort die Methode verschlüsselung() aurufen.
In der Methode verschlüsseln musst du ihm dann mittels textField2.setText(String t); sagen was in das TextFeld rein soll.

Um aus einem char[] Array ein String zu machen kannst du ganz einfach die String#valueOf(char[] a); Methode nehmen.
Hier mal ein kleines Beispiel:

Java:
button.addActionListener(new ActionListener(){
     @Override
     public void actionPerformed(ActionEvent e)
     {
          verschlüsselung();
     }
});

  public void verschlüsselung() {
    ...
    if (offset >= 1 && offset <= 127) {
      ...
      char[] meinNeuesArray = verschluesseln(offset, meinArray);
      textfield2.setText(String.valueOf(meinNeuesArray));
    }

  }

Gruß
Robert
 

VfL_Freak

Top Contributor
Moin,
wenn ich es starten will, wird in der Konsole irgendwas von exeption at line 14 und line 68 angezeigt
BTW - Tipp für die Zukunft: in solchen Fällen ist es immer sinnvoll, die auftretenden Fehler auch zu benennen, sprich: den Stacktrace zu posten!

Zudem: der Verweis auf irgendwelche Zeilennummer macht auch nur dann sie, wenn man diese im geposteten Code aus erkennt !!

"irgendwas von exeption" sagt nun wirklich kaum was aus und zu Ratespielen hat hier keiner Lust !!

Gruß Klaus
 

Lucaaa

Bekanntes Mitglied
gut soweit habe ich das. Jetzt habe ich nur noch das Problem, dass wenn ich in das Textfeld etwas eingebe, und auf den Button Klicke, nur die Textfelder geleert werden, und weiter nichts.

Java:
package de.luca.java.rotcrypt;
import java.awt.Color;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class gui extends JFrame {
   
 
 
 
 private JTextField textfield;
  private JTextField textfield2;
  private JTextField textfield3;
 
 public static void main(String[] args) {
   new gui();
  }
  
  public gui(){
   super("Rotationsverschlüsselung");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    getContentPane().setLayout(null);
    setResizable(false);
    setAlwaysOnTop(true);
   textfield = new JTextField();
    textfield.setBounds(5, 30, 290, 25); // geht bis 300
    getContentPane().add(textfield);
    
  textfield2 = new JTextField();
    textfield2.setBounds(305, 30, 285, 25);
    getContentPane().add(textfield2);
    
    
    
   textfield3 = new JTextField();
    textfield3.setBounds(270, 60, 30, 20);
    getContentPane().add(textfield3);
    
   
    ActionButton handler = new ActionButton();
    
    
   JButton button = new JButton("Text v*erschlüsseln");
    button.setBounds(335, 60, 225, 20);
    button.setBackground(Color.CYAN);
    button.addActionListener((ActionListener) handler);
    getContentPane().add(button);
   JLabel label = new JLabel("Zu verschlüsselnden Text eingeben:");
    label.setBounds(45, 5, 280, 20);
    getContentPane().add(label);
   JLabel label2 = new JLabel("Verschlüsselter Text");
  label2.setBounds(380, 5, 280, 20);
  getContentPane().add(label2);
    
   JLabel label3 = new JLabel("Um wie viele Stellen soll verschoben werden?");
    label3.setBounds(5, 60, 280, 20);
    getContentPane().add(label3);
   
   
   
    
   
    setLocation(100, 100);
    setSize(600, 117);
    setVisible(true);   
  }
  
  public  void verschlüsseln() {
   String textinput = textfield.getText();
  String anzahlStellen = textfield3.getText();
     int offset = Integer.parseInt(anzahlStellen);
  
   if (offset >=1 && offset <=127){
    char[] meinArray = textinput.toCharArray();
   char[] meinNeuesArray = verschluesseln(offset, meinArray);
   String output = String.valueOf(meinNeuesArray);
   textfield2.setText(output);
   }
   
  }
   public static char[] verschluesseln(int offset, char[] charArray) {
    char[] cryptArray =new char[charArray.length];
   for (int i = 0; i < charArray.length; i++) {
    int verschiebung = (charArray[i] + offset)%128;
    cryptArray[i] = (char) (verschiebung);
   }
   return cryptArray;
   }
    
  
   
  
 

 }
 

Lucaaa

Bekanntes Mitglied
ActionButton ist die Klasse für den ActionListener vom Button.
Hier der Code:
Java:
package de.luca.java.rotcrypt;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ActionButton implements ActionListener {
 @Override
 public void actionPerformed(ActionEvent e) {
  gui guiclass = new gui();
  guiclass.verschlüsseln();
  
 }
}
 

Robat

Top Contributor
Und da ist das Problem. In dem Listener machst du jedes mal wenn dein Button geklickt wird eine neue Instanz von deiner GUI. Damit erstellt er auch die Felder neu --> Sie sind leer.

Am besten ist, wenn du deinm ActionButton einem Konstruktor gibst, der eine Instanz von gui erwartet. Über diese Instanz kannst du dann deine Methode aufrufen. Damit erstellst du kein neues Objekt sondern übergibst das "momentane" Objekt einfach an deinen Handler, der damit weiter arbeiten kann :)

Zum Bleistift:

Java:
public class Foobar
{
      public static void main(String[] args)
     {
           new Foobar();
     }

     public Foobar() {
           FoobarHandler handler = new FoobarHandler(this);
     }
   
     public void doSomething();
}







public class FoobarHandler implements ActionListener
{
      private Foobar foobar;

     public FoobarHandler(Foobar foobar)
     {
           this.foobar = foobar;
     }

    public void actionPerformed(ActionEvent e)
    {
           foobar.doSomething();
    }
}

Gruß
Robert
 

Robat

Top Contributor
Ehm.. hab ich dir doch geschrieben? :D

Da ist doch sogar ein Codebeispiel.. was genau verstehst du denn von oben nicht?
Fände es nicht sehr hilfreich dir jetzt den Code vorzukauen..
 

Viktim

Bekanntes Mitglied
Du musst das hier:
gui guiclass = new gui();
loswerden, weil du ja sonst, wie Robat sagte ein neues Objekt erstellst und nich das alte benutzt :)

Also solltest du einen Konstruktor in deinen ActionButton einbauen mit dem du aus der gui-Klasse dein gui Objekt mitgibst.
Kleiner Tipp noch, auf das aktuelle Objekt kann man mit this zugeifen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
hannibalstgt Fehler bei JCOMBOBOX GUI Anzeige AWT, Swing, JavaFX & SWT 4
J Fehler bei jFame.setTitle() AWT, Swing, JavaFX & SWT 8
thor_norsk SpringBoot-Fehler AWT, Swing, JavaFX & SWT 7
J Ich kriege eine Fehler Messesage bei meinem Media Player AWT, Swing, JavaFX & SWT 8
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
parrot JavaFX Fehler AWT, Swing, JavaFX & SWT 4
H JavaFX JavaFX Import Fehler AWT, Swing, JavaFX & SWT 4
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
A eine Fehler AWT, Swing, JavaFX & SWT 9
A Fehler beim Hintergrund AWT, Swing, JavaFX & SWT 17
L JavaFX Fehler beim setzen von Farben AWT, Swing, JavaFX & SWT 16
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
W fillRect() in Schleife spukt nur Fehler aus AWT, Swing, JavaFX & SWT 3
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
Tommy135 JavaFX JavaFX Fehler beim Scenewechsel AWT, Swing, JavaFX & SWT 23
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
E Fehler bei Button AWT, Swing, JavaFX & SWT 1
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
I Fehler bei Alert AWT, Swing, JavaFX & SWT 6
J Fehler bei PixelColor erkennung AWT, Swing, JavaFX & SWT 4
T Fehler bei ActionEvent? AWT, Swing, JavaFX & SWT 3
V Fehler bei Würfelsimulator GUI AWT, Swing, JavaFX & SWT 2
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
Seikuassi SWING - (Hoffentlicher) simpler Color-Fehler AWT, Swing, JavaFX & SWT 4
M Swing finde den fehler nicht AWT, Swing, JavaFX & SWT 9
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
D Unlogischer Fehler? AWT, Swing, JavaFX & SWT 2
L Eclipse Fehler besser zu verstehen!!! AWT, Swing, JavaFX & SWT 4
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
H GUI-Textausgabe Fehler AWT, Swing, JavaFX & SWT 5
S String is null Fehler AWT, Swing, JavaFX & SWT 2
P Swing GroupLayout() Fehler? AWT, Swing, JavaFX & SWT 3
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
N Touchscreen-Scrollen, wo liegt der Fehler? AWT, Swing, JavaFX & SWT 3
N Fehler Inhalt von JTable wird gelöscht AWT, Swing, JavaFX & SWT 5
S Fehler beim Zweites 3D Bild AWT, Swing, JavaFX & SWT 2
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
M GEF tutorial Fehler finden AWT, Swing, JavaFX & SWT 4
S Grafik Fehler AWT, Swing, JavaFX & SWT 15
M Fehler bei Arrayübergabe an JComboBox AWT, Swing, JavaFX & SWT 10
J Fehler beim Einklappen eines Trees AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Fehler beim Laden eines Bildes AWT, Swing, JavaFX & SWT 25
S LayoutManager Fehler gesucht 18.6.2011 AWT, Swing, JavaFX & SWT 4
C Fehler nur bei manchen Usern AWT, Swing, JavaFX & SWT 8
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
K JFrame + KeyListener + Runnable = Fehler AWT, Swing, JavaFX & SWT 3
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Fehler beim Überzeichnen von Linien AWT, Swing, JavaFX & SWT 11
E Swing Fehler nach Befüllen einer JTable mit gesetzem Rowsort?! AWT, Swing, JavaFX & SWT 10
P Swing Misteriöser Fehler JTable AWT, Swing, JavaFX & SWT 5
Y Swing JPasswordField Fehler AWT, Swing, JavaFX & SWT 14
A Swing Unknown Source Fehler AWT, Swing, JavaFX & SWT 9
N Fehler bei Grouplayout AWT, Swing, JavaFX & SWT 17
S ActionPerformed Fehler... AWT, Swing, JavaFX & SWT 9
C BufferedImage-Fehler? Falsches Bild wir gezeichnet AWT, Swing, JavaFX & SWT 5
A Tabellen Überschriften ändern -setColumnIdentifiers()- Fehler AWT, Swing, JavaFX & SWT 7
hdi Swing JTable: Fehler beim Nutzen von RowSorter#setRowFilter AWT, Swing, JavaFX & SWT 4
M.F.G. Fehler bei der Anzeige Grafischer Elemente AWT, Swing, JavaFX & SWT 13
D Swing Verwirrender Fehler AWT, Swing, JavaFX & SWT 7
J Fehler in fillRoundRect AWT, Swing, JavaFX & SWT 2
D Probleme mit Spiel-Engine. Komische Fehler. AWT, Swing, JavaFX & SWT 5
W fehler jedoch ka wo AWT, Swing, JavaFX & SWT 14
F Fehler in der Startklasse AWT, Swing, JavaFX & SWT 13
A Fehler bei der Parametereingabe? AWT, Swing, JavaFX & SWT 16
P finde den Fehler im JTable nicht AWT, Swing, JavaFX & SWT 2
Spin Fehler in Vergleich AWT, Swing, JavaFX & SWT 6
K Swing: ContentPane von JDialog ist transparent (Fehler) AWT, Swing, JavaFX & SWT 10
Dragonfire ZoomImage flackert -> Fehler: repaint-Aufruf [gelöst] AWT, Swing, JavaFX & SWT 5
T Invalid Range - Fehler bei TableRowSorter / Tabelle AWT, Swing, JavaFX & SWT 17
DasDogma Fehler bei getText() AWT, Swing, JavaFX & SWT 10
I Fehler bei verschachtelten JScrollPanes AWT, Swing, JavaFX & SWT 2
M Fehler beim Zugriff von awt-KeyListener auf swt-Shell AWT, Swing, JavaFX & SWT 2
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
K Textfelder auslesen gibt immer Fehler AWT, Swing, JavaFX & SWT 2
D Fehler bei Button Array AWT, Swing, JavaFX & SWT 8
P Fehler beim Einlesen eines JTextFields AWT, Swing, JavaFX & SWT 2
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
M Fehler mit Jigloo AWT, Swing, JavaFX & SWT 3
M setColor mit Fehler cannot fiend symbol (java.awt.Color) AWT, Swing, JavaFX & SWT 2
Z habe code, habe fehler, habe keine lösung AWT, Swing, JavaFX & SWT 7
R JComboBox Fehler AWT, Swing, JavaFX & SWT 7
B NPE-Fehler AWT, Swing, JavaFX & SWT 11
A Fehler beim Auslesen aus einem Textfeld AWT, Swing, JavaFX & SWT 2
P JRadioButton in Schleife erstellen > wo liegt mein Fehler AWT, Swing, JavaFX & SWT 2
R setIcon löst Fehler aus AWT, Swing, JavaFX & SWT 4
B Durch Auslesen der Zwischenablage folgt Fehler im Excel AWT, Swing, JavaFX & SWT 2
spacegaier Fehler beim Aufrufen von Dialog aus ActionListener AWT, Swing, JavaFX & SWT 12
D Fehler bei JTable AWT, Swing, JavaFX & SWT 8
S TextField fehler AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben