GUI+Zufallszahlen+Range

christianSch

Grünschnabel
Hallo Zusammen!

Bin totaler JAVA-Neuling und hab gleich eine Hammer Aufgabe bekommen:
Man soll Zufallszahlen in Tabellen Form (row, column) ausgeben können, das ganze soll über eine GUI steuerbar sein. Man soll als Anwender die Möglichkeit haben, Zeilen- und Spaltenanzahl eingeben zu können (Wieviel) und zu jeder Spalte soll der Wertebereich auswählbar sein (Bsp: Sp1 – 4 stellige Zahlen, Sp2 – 5 stellige usw.)
Zufallszahlen sollen aber in der Spalte eindeutig sein!

Habe schon eine Menge probiert, aber bin leider zu noch keinem brauchbaren Ergebnis gekommen.......Wäre nett, wenn mir jemand helfen könnte
:rolleyes:
(hab mich auch hier schon umgeschaut und einiges gefunden, aber dies zusammenzufügen zu einem lauffähigen Programm-dafür hab ich anscheinend zu wenig Kenntnisse:( :( :(
 
Sorry aber mit meinen "wahnsinnigen" Kenntnissen kann ich auch nicht viel damit anfangen:(
Ich weiß nicht wie ich die range über einzelne Spalten in der GUI steuern kann....
 
Original geschrieben von christianSch
Sorry aber mit meinen "wahnsinnigen" Kenntnissen kann ich auch nicht viel damit anfangen:(
Ich weiß nicht wie ich die range über einzelne Spalten in der GUI steuern kann....

Nun, Du musst natürlich eine entsprechende Eingabemöglichkeit schaffen für die veränderbaren Parameter. Ob das in dem Hauptfenster oder in einem eigenen Dialog geschehen soll, musst Du Dir schon selbst überlegen.
Und wenn Du mit Tabellen bisher noch keine Erfahrungen gesammelt hast, dann wird es höchste Zeit, damit zu beginnen. Achte darauf, dass die Daten von der eigentlichen Tabelle getrennt in einem TableModel verwaltet werden. Das vereinfacht vieles und schafft eine bessere Übersichtlichkeit.
Am besten Du überlegst Dir, wie die Anwendung und Funktionalität aussehen sollen und beginnst einfach. Wenn etwas nicht klappt oder Du an einer Stelle nicht weiterkommst, frag hier erneut nach.
 
Irgendwie raffe ich das nicht.......Zufallszahlen mit Wertebereich ok. aber das mit der GUI Ich hab jetzt schon einiges ausprobiert aber irgendwie klappt das net!
Vorallem von der Eingabe der Zeilen und Spaltenanzahl zu nächsten Dialog o.ä. wo man dann in den einzelnen Spalten die Range festlegt :confused: :confused: :confused: :confused: :confused:
 
Original geschrieben von christianSch
Irgendwie raffe ich das nicht.......Zufallszahlen mit Wertebereich ok. aber das mit der GUI Ich hab jetzt schon einiges ausprobiert aber irgendwie klappt das net!
Vorallem von der Eingabe der Zeilen und Spaltenanzahl zu nächsten Dialog o.ä. wo man dann in den einzelnen Spalten die Range festlegt :confused: :confused: :confused: :confused: :confused:

"irgendwie klappt das net" ist nicht gerade hilfreich bei der Fehlersuche.

1) Überleg Dir die Vorgehensweise der Dateneingabe und -haltung (!)

2) Was hast Du denn bisher umgesetzt? Konzept / (relevanter) Code ?

3) Ich habe gerade Arbeit für 2 Wochen auf den Tisch bekommen (TabbedPane, ich komme! :)), daher kann und will ich Dir die Arbeit auch nicht abnehmen, höchstens hier und da mal einen Blick drauf werfen. Neu entwickeln ist nicht. Aber hier sind sicher noch andere, die ausführlicher helfen können. Ob sie wollen und die Zeit dafür haben, wirst Du schon merken. ;-)
 
Es ist zwar best. völliger Blödsinn was ich da versucht habe (funkt. auch nicht, aber ich raff es wirklich net! Ich steh ja auch noch am Anfang und muss´eine Menge lernen, also geht bitte mit mir nicht zu hart ins Gericht...............................................
Ich wollte eigentlich von dem einem Dialog Eingabe von Spalten +Zeilen zu einem nächsten Dialog wo ich dann die einzelnen Wertebereiche für die Spalten eingeben kann und dann erzeugen:confused:
Code:
public class Dialog extends JDialog
{
	private int[][] array;
	
	GridLayout gridLayout = new GridLayout(2, 1);
	JPanel panel = new JPanel();
	JButton jbCreate = new JButton("Datei erzeugen");
	JLabel jlZeilen = new JLabel("Zeilenanzahl:");
	JLabel jlSpalten = new JLabel("Spaltenanzahl:");
	JLabel jlRange = new JLabel ("Range pro Spalte");
	JTextField jtfZeilen = new JTextField();
	JTextField jtfSpalten = new JTextField();
	JTextField jtfRange = new JTextField();
	 
	Dialog()
	{
		setTitle("......................");
		this.setSize(400, 400);
		panel.setLayout(new GridLayout(2,2));
		panel.add(jlZeilen);
		panel.add(jtfZeilen);
		panel.add(jlSpalten);
		panel.add(jtfSpalten);
		panel.add(jlRange);
		panel.add(jtfRange);
		
		this.getContentPane().setLayout(gridLayout);
		this.getContentPane().add(panel);
		this.getContentPane().add(jbCreate);
		
		jbCreate.addActionListener(new ActionListener()
						{
							public void actionPerformed(ActionEvent e)
							{
								createFile();
							}
						});
	}
	
	private void createFile()
	{
		int iZeilen = Integer.parseInt(jtfZeilen.getText());
		int iSpalten = Integer.parseInt(jtfSpalten.getText());
		int iRange = Integer.parseInt(jtfRange.getText());
		RandomRange rr = new RandomRange(iZeilen, iSpalten);
		array = rr.getResult();
		saveToFile();
		System.exit(0);		
	}

	public void saveToFile()
	{
		try
		{
			FileOutputStream fos =
				new FileOutputStream("c:/..............");
			PrintStream output = new PrintStream(fos);
			for (int i = 0; i < array.length; i++)
			{
				for (int j = 0; j < array[i].length; j++)
				{
					output.print(array[i][j] + "\t");
				}
				output.println();
			}
			output.close();
			System.out.println("Datei wurde erstellt");
		}
		catch (FileNotFoundException e)
		{
			System.out.println("Schreiben fehlgeschlagen");
		}
	} //-- End method saveToFile()
	
	private class RandomRange
	{
		private int[][] array;
		private Random rnd;
		private int rangeStart;
		private int rangeEnd;
		
		public RandomRange(int row, int column)
		{
			create(row, column);
		}

		public int[][] getResult()
		{
			return array;
		}

		public void create(int row, int column)
		{
			array = new int[row][column];
			for (int i = 0; i < row; i++)
			{
				for (int j = 0; j < column; j++)
				{
					System.out.print((int) (Math.random()*100) + " ");
					array[i][j] = (int) (Math.random()*100);
				}
				System.out.println();
			}
		}

		public void generate(int rows, int column)
		{
			BitSet b = new BitSet();
			Random r = new Random();

			int cnt = 0;
			while (cnt < rows)
			{
				int num = 1 + Math.abs(r.nextInt()) % 49000;
				if (!b.get(num))
				{
					b.set(num);
					++cnt;
				}
			}
		}
			public void Range(int rS, int rE) 
			{
				rangeStart = rS;
				rangeEnd = rE;
				rnd = new Random();
			

				public void 
				{
					RandomRange rr = new RandomRange(-50, 50);
					for (int i = 0; i < 1000; i++) 
					{
						System.out.println(rr.nextInt());
					}
				}
			}
			private int nextInt() 
			{
				return ((rangeStart - 1) + rnd.nextInt()) % (rangeEnd + 1);
			}
		}
			System.out.println(" ");
	
	}
	
	public static void main(String args[])
	{
		Dialog myDialog = new Dialog();
		myDialog.show();
	} 
}
 
OK, nur kurze Tipps:
- Lass das mit den Files erst einmal weg
- Lege eine Klasse an, die Deine Wertebereicheingaben verwaltet, z.B.
public class ColumnRanges
Sie enthält 3 Variablen: Spaltenindex, untere Grenze, obere Grenze, dazu die entsprechenden getter und setter
- Zur Eingabe: Zuerst fragst Du in einem Dialog die Anzahl Zeilen und Spalten ab. Dann lässt Du in Abhängigkeit von der Spaltenanzahl einen weiteren Eingabedialog so oft aufpoppen, bis für alle Spalten die Wertebereiche eingegeben wurden. Jedesmal, wenn solch ein Dialog geschlossen wurde, legst Du eine neue Instanz von ColumnRanges an, setzt dort die eingetragenen Werte und fügst diese Instanz einer Liste hinzu.

Und dann sehen wir mal weiter - muss erst noch mal die ursprüngliche Aufgabenstellung lesen. ;-)
Aber damit hast Du alle benötigten Daten und Informationen vorliegen.
 
Original geschrieben von Snape
OK, nur kurze Tipps:

- Zur Eingabe: Zuerst fragst Du in einem Dialog die Anzahl Zeilen und Spalten ab. Dann lässt Du in Abhängigkeit von der Spaltenanzahl einen weiteren Eingabedialog so oft aufpoppen, bis für alle Spalten die Wertebereiche eingegeben wurden. Jedesmal, wenn solch ein Dialog geschlossen wurde, legst Du eine neue Instanz von ColumnRanges an, setzt dort die eingetragenen Werte und fügst diese Instanz einer Liste hinzu.
.

Leichter gesagt als getan, vorallem mit dem obigen :confused:
der Rest war ja soweit ok
 
Zurück