ERLEDIGT
NEIN
NEIN
ANTWORTEN
18
18
ZUGRIFFE
787
787
EMPFEHLEN
-
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
-
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
-
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); } }
-
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
-
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?
-
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
-
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.
-
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
-
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)
-
Dankeschön. Eines musst du preisgeben, wann meckert dein Proggi?
Vg Erdal
-
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.
-
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
-
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.
-
Lieber Donni,
ich hab dir doch einen Link gegeben. Da sind doch Beispiele.
Vg Erdal
-
Wie wendest du denn sort an, und welche Fehlermeldung wird angezeigt?
Vg Erdal
Ähnliche Themen
-
Brauche Hilfe bei C-Programmierung
Von mausi0007 im Forum C/C++Antworten: 3Letzter Beitrag: 29.10.09, 22:03 -
brauche hilfe mit programmierung
Von inohtep im Forum C/C++Antworten: 4Letzter Beitrag: 09.03.08, 16:32 -
Applet-Programmierung Hilfe
Von lindin im Forum JavaAntworten: 3Letzter Beitrag: 28.09.04, 12:49 -
Hilfe in VB Programmierung gesucht
Von RouviDog im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 18.02.04, 15:55 -
DLL Programmierung! HILFE
Von MathiasRichter im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 15.09.03, 22:44





Zitieren
Login





