tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
787
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Donni Donni ist offline Mitglied
    Registriert seit
    May 2004
    Beiträge
    22
    Sorry falls es dieses Problem schon beantwortet geben sollte. Habe es aber nicht gefunden.

    Also mein Prob. Ich soll für die Schule ein Prog machen in den ich 2 Textfilds habe und 2 Buttons habe. Das Habe ich auch soweit gemacht, nun ist mein Problem das man in das erste Textfild maximal 10 durch ein , getrennte Zahlen eingeben können von den jede einzelne Zahl als Balken ausgegeben werden soll. Das Ausgeben ist ja kein Problem, aber wie bekomme ich das Textfild zu einer richtigen integer Zahl? Das sotieren im 2ten Textfeld ist auch kein Problem. Wäre genial wenn ihr mir bei diesen Prob helfen könntet. Habe zwar noch 2 Probs mit weiteren 2 Programmen aber die werde ich erst posten wenn ich das mit den Diagramm geschafft habe.

    MfG
     

  2. #2
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Donni,

    1. mit getText() String holen
    2. mit split(",") String splitten und in ein Array speichern.
    3. mit einer Schleife und Integer.parseInt() die int Werte aus dem Array zum weiterarbeiten parsen

    Vg Erdal
     

  3. #3
    Donni Donni ist offline Mitglied
    Registriert seit
    May 2004
    Beiträge
    22
    Das ist momentan mein verwendeter Quellcode, der beim Comprelieren auch keine Fehler anzeigt, nur wenn ich dann im Eingabefeld mehr als 10 Zahlen eingebe wird nichts ausgegeben, sondern ein Fehler im Compiler dargestellt. Also muss noch irgendwo was falsch sein. Habe ich mein String Array falsch ins Integer Array umgewandelt?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    Graphics g=pac.getGraphics();
         boolean wahr= true;
         int[] splitter2=new int[10];
         String text=tf1.getText();
         String[] splitter=text.split(",");
     
         for (int a=0;a<splitter.length ;a++ ) {
            int c=Integer.parseInt(splitter[a]);
            splitter2[a]=c;
         }
         if (splitter.length>10) {
           g.drawString("Es wurden zu viele Zahlen eingegeben!",30,90);
           wahr=false;
         }else {
          for (int i = 0; i < splitter.length; i++) {
           if (splitter2[i]>20){
             g.drawString("Es wurden zu grosse Zahlen eingegeben!",30,90);
             wahr=false;
           }
         }
         }
         if (wahr==true){
           for (int j = 0; j < splitter.length; j++) {
            int d=splitter2[j];
            g.drawString(""+d,30,j*10);
           }
         }
     

  4. #4
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Donni,

    die Fehler stehen im Code.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.ImageObserver;
     
    import javax.swing.*;
     
    public class Frame1 extends JFrame implements ActionListener {
     
        JTextField tf1 = new JTextField();
     
        JButton b1 = new JButton("zeichne");
     
        JPanel pan = new JPanel();
     
        public Frame1() {
            this.setSize(300, 300);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setAlwaysOnTop(true);
            this.setLocationByPlatform(true);
     
            this.add(tf1, BorderLayout.NORTH);
            this.add(b1, BorderLayout.SOUTH);
            this.add(pan, BorderLayout.CENTER);
     
            b1.addActionListener(this);
     
            this.setVisible(true);
     
        }
     
        public void draw() {
            Graphics g = pan.getGraphics();
            g.clearRect(0, 0, ImageObserver.WIDTH, ImageObserver.HEIGHT);
            boolean wahr = true;
     
            // Fehler: splitter2 war zuvor zu klein, nämlich 10
            int[] splitter2 = new int[100];
            String text = tf1.getText();
            String[] splitter = text.split(",");
     
            for (int a = 0; a < splitter.length; a++) {
                int c = Integer.parseInt(splitter[a]);
                splitter2[a] = c;
            }
            if (splitter.length > 10) {
                g.drawString("Es wurden zu viele Zahlen eingegeben!", 30, 90);
                wahr = false;
            } else {
                for (int i = 0; i < splitter.length; i++) {
                    if (splitter2[i] > 20) {
                        g.drawString("Es wurden zu grosse Zahlen eingegeben!", 30,
                                90);
                        wahr = false;
                    }
                }
            }
            if (wahr == true) {
                for (int j = 0; j < splitter.length; j++) {
                    int d = splitter2[j];
                    // Fehler: vorher: y Koordinate -> j * 10 
                    //jetzt: y Koordinate (j +1) * 10
                    // da j bei Null anfing fehlte immer die erste Zahl
                    g.drawString("" + d, 30, (j + 1) * 10);
                }
            }
        }
     
        public static void main(String[] args) {
            new Frame1();
        }
     
        public void actionPerformed(ActionEvent e) {
            draw();
        }
    }

    Vg Erdal
     

  5. #5
    Donni Donni ist offline Mitglied
    Registriert seit
    May 2004
    Beiträge
    22
    Danke hat alles wunderbar geklapt. Nur noch eine kurze Frage, da ich ja nun mehrere Buttons habe, gibt es eine möglichkeite die Variablen auch für die anderen Buttons zu benutzen, ohne wieder alles neu zu difinieren?
     

  6. #6
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Du müsstest entweder mehrere ActionListener definieren. Und von jedem Button aus, für diesen das draw aufrufen.

    Oder diesen einen vorhandenen ActionListener auf alle Buttons adden, und darin mit e.getSource und if oder switch den auslösenden Button finden, und die Methode draw hierfür aufrufen.


    Vg Erdal
     

  7. #7
    Donni Donni ist offline Mitglied
    Registriert seit
    May 2004
    Beiträge
    22
    So ich habe nur noch ein Problem. Ich weis nicht wie ich das umändern muss damit nicht gemekert wird. Wie sonst auch mekert er erst beim Ausführen.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    int[] splitter2 = new int[100];
         String text = tf1.getText();
         String[] splitter = text.split(",");
     
       for (int a = 0; a < splitter.length; a++) {
        int c = Integer.parseInt(splitter[a]);
        splitter2[a] = c;
       }
       int s;
       boolean o=false;
       do {
     
          for(int r=0;r<splitter.length ;r++ ) {
            if(splitter2[r]>splitter2[r+1]) {
              s=splitter2[r];
              splitter2[r]=splitter2[r+1];
              splitter2[r+1]=s;
              o=true;
            }
          }
        } while(o==true);
        int ausgabe=splitter2[0];
        tf2.setText(""+ausgabe);

    Danach wäre mein Programm endlic hfertig.
     

  8. #8
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo,

    wie wärs wenn du einen Lauffähigen Code präsentierst, so dass ich den ausprobieren und die Fehlermeldung sehen kann. Oder einfach die Fehlermeldung mal mitteilen. Wie du in meiner vorherigen Antwort gesehen hast, habe ich zuerst ein Gerüst, eine Klasse, eine GUI für dein Code erstellen müssen, um die auswirkungen zu sehen, und den Fehler zu erkennen. Du präsentierst diesmal wieder einmal einen Codeabschnitt, ohne Klasse, Konstruktor, Testaufruf. Es steht auch die Fehlermeldung nicht dabei .

    Also, wenn du denen die dir Helfen sollen selber hilfst, dann helfen sie dir auch gerne. Eine Fehlermeldung und oder ein Testaufruf deines Codes in der dieser Fehler passiert wäre von Vorteil .

    Vg Erdal
     

  9. #9
    Donni Donni ist offline Mitglied
    Registriert seit
    May 2004
    Beiträge
    22
    So dies ist nun mein vollständiger Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    
    import java.awt.*;
    import java.awt.event.*;
     
    /**
      *
      * Beschreibung
      *
      * @version 1.0 vom 30.03.2006
      * @author
      */
     
    public class Diagramm extends Frame {
      // Anfang Variablen
      private Panel panel1 = new Panel(null);
        private TextField tf1 = new TextField();
        private TextField tf2 = new TextField();
        private Button button1 = new Button();
        private Button button2 = new Button();
        private Button button3 = new Button();
        private Button button4 = new Button();
      private Panel pac = new Panel(null);
      // Ende Variablen
     
      public Diagramm(String title) {
        // Frame-Initialisierung
        super(title);
        addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent evt) { System.exit(0); }
        });
        int frameWidth = 380;
        int frameHeight = 480;
        setSize(frameWidth, frameHeight);
        Panel cp = new Panel(null);
        add(cp);
        // Anfang Komponenten
     
        panel1.setBounds(0, 0, 377, 121);
        panel1.setBackground(Color.BLACK);
        pac.setForeground(Color.RED);
        cp.add(panel1);
        pac.setBounds(0, 120, 377, 329);
        pac.setBackground(Color.BLACK);
        cp.add(pac);
        tf1.setBounds(16, 16, 201, 24);
        tf1.setText("");
        panel1.add(tf1);
        tf2.setBounds(16, 56, 201, 24);
        tf2.setText("");
        panel1.add(tf2);
        button1.setBounds(232, 16, 137, 17);
        button1.setLabel("Übernehmen");
        panel1.add(button1);
        button1.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            button1ActionPerformed(evt);
          }
        });
     
        button2.setBounds(232, 40, 137, 17);
        button2.setLabel("Sortieren");
        panel1.add(button2);
        button2.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            button2ActionPerformed(evt);
          }
        });
     
        button3.setBounds(232, 96, 137, 17);
        button3.setLabel("Löschen");
        panel1.add(button3);
        button3.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            button3ActionPerformed(evt);
          }
        });
     
        button4.setBounds(232, 64, 137, 17);
        button4.setLabel("Diagramm");
        panel1.add(button4);
        button4.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            button4ActionPerformed(evt);
          }
        });
     
        // Ende Komponenten
     
        setResizable(false);
        setVisible(true);
      }
     
      // Anfang Ereignisprozeduren
      public void button1ActionPerformed(ActionEvent evt) {
         Graphics g = pac.getGraphics();
     
         boolean wahr = true;
     
         // Fehler: splitter2 war zuvor zu klein, nämlich 10
         int[] splitter2 = new int[100];
         String text = tf1.getText();
         String[] splitter = text.split(",");
     
       for (int a = 0; a < splitter.length; a++) {
        int c = Integer.parseInt(splitter[a]);
        splitter2[a] = c;
       }
       if (splitter.length > 10) {
         g.drawString("Es wurden zu viele Zahlen eingegeben!", 30, 75);
         wahr = false;
       } else {
          for (int i = 0; i < splitter.length; i++) {
           if (splitter2[i] > 20) {
              g.drawString("Es wurden zu grosse Zahlen eingegeben!", 30,90);
              wahr = false;
           }
          }
         }
       if (wahr == true) {
          for (int j = 0; j < splitter.length; j++) {
            int d = splitter2[j];
            // Fehler: vorher: y Koordinate -> j * 10
            //jetzt: y Koordinate (j +1) * 10
            // da j bei Null anfing fehlte immer die erste Zahl
            g.drawString("" + d, 30, (j+1) * 15);
          }g.drawString("Bitte vor der Zeichnung auf Löschen klicken!",60,15);
       }
      }
       public void button2ActionPerformed(ActionEvent evt) {
         int[] splitter2 = new int[100];
         String text = tf1.getText();
         String[] splitter = text.split(",");
     
       for (int a = 0; a < splitter.length; a++) {
        int c = Integer.parseInt(splitter[a]);
        splitter2[a] = c;
       }
       int s;
       boolean o=false;
       do {
     
          for(int r=0;r<splitter.length ;r++ ) {
            if(splitter2[r]>splitter2[r+1]) {
              s=splitter2[r];
              splitter2[r]=splitter2[r+1];
              splitter2[r+1]=s;
              o=true;
            }
          }
        } while(o==true);
        int ausgabe=splitter2[0];
        tf2.setText(""+ausgabe);
     
     
         
      }
     
      public void button3ActionPerformed(ActionEvent evt) {
        Graphics g=pac.getGraphics();
          int br=pac.getWidth();
          int fh=pac.getHeight();
          g.clearRect(0,0,br,fh);
          g.drawLine(10,10,10,fh-10);
          g.drawLine(10,fh-10,br-10,fh-10);
      }
     
      public void button4ActionPerformed(ActionEvent evt) {
         Graphics g=pac.getGraphics();
         int br=pac.getWidth();
          int fh=pac.getHeight();
          g.drawLine(10,10,10,fh-10);
          g.drawLine(10,fh-10,br-10,fh-10);
          int[] splitter2 = new int[100];
         String text = tf1.getText();
         String[] splitter = text.split(",");
         int m=33;
       for (int a = 0; a < splitter.length; a++) {
        int c = Integer.parseInt(splitter[a]);
        splitter2[a] = c;
       }
         for (int p=0;p<splitter2.length ;p++ ) {
           int l=splitter2[p];
           l=l*15;
           int sp=fh-10-l;
           g.drawRect(m,sp,15,l);
           m=m+35;
           
           
         }
      }
     
      // Ende Ereignisprozeduren
     
      public static void main(String[] args) {
        new Diagramm("Diagramm");
      }
    }
    Geändert von Donni (01.04.06 um 16:43 Uhr)
     

  10. #10
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Dankeschön. Eines musst du preisgeben, wann meckert dein Proggi?

    Vg Erdal
     

  11. #11
    Donni Donni ist offline Mitglied
    Registriert seit
    May 2004
    Beiträge
    22
    Axo ja. Es sollen halt maximal 10 Zahlen mit "," getrennt in das obere Textfeld eingegeben werden können. Wenn ich nun auf den Button "Sotieren" klicke sollen im 2ten Feld die Zahlen der größe nach erscheinen. Bei mir ist das Button 2.
    Bei der Funktion hat er Probleme. Er mekert auc nicht direct sondern ist es asl wenn er sich aufgehängt hat. Das ist aber nach nen paar Sekunden wieder vorbei.
     

  12. #12
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Donni,

    da scheint in deiner Schleife etwas nicht zu stimmen. Das geht aber viel einfacher mit der Klasse Arrays. Hinweis, verwende de Methoden sort() und toString() von Arrays.

    http://javaalmanac.com/egs/java.util...SortArray.html

    Dann solltest du das arrray splitter2 in deiner Sortiermethode nach dem splitten erstellen, denn dann hast du ja die länge von splitter, und kannst splitter2 genau in der gleichen Größe erstellen.


    Vg Erdal
     

  13. #13
    Donni Donni ist offline Mitglied
    Registriert seit
    May 2004
    Beiträge
    22
    Irgendwie schein ich zu blöd dazu zu sein das anzuwenden. Wie macht man das mit der sort(); Methode? Habe mal gegoogled und da habe ich nur allgemeingehaltene Beispiele gefunden, die dann aber immer nen Fehler zeigten.
     

  14. #14
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Lieber Donni,

    ich hab dir doch einen Link gegeben. Da sind doch Beispiele.

    Vg Erdal
     

  15. #15
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Wie wendest du denn sort an, und welche Fehlermeldung wird angezeigt?

    Vg Erdal
     

Ähnliche Themen

  1. Brauche Hilfe bei C-Programmierung
    Von mausi0007 im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 29.10.09, 22:03
  2. brauche hilfe mit programmierung
    Von inohtep im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 09.03.08, 16:32
  3. Applet-Programmierung Hilfe
    Von lindin im Forum Java
    Antworten: 3
    Letzter Beitrag: 28.09.04, 12:49
  4. Hilfe in VB Programmierung gesucht
    Von RouviDog im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 18.02.04, 15:55
  5. DLL Programmierung! HILFE
    Von MathiasRichter im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 15.09.03, 22:44