Hilfe bei Programmierung

Donni

Mitglied
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:
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:
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:
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:
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");
  }
}
 
Zuletzt bearbeitet:
Zurück