Properties?

basuhexe

Grünschnabel
Ich hab ´n Programm geschrieben, welches mir Zufallszahlen in Spalten und Zeilen in eine Datei schreibt. Die Zeilen-Anzahl wird über args gesteuert und die Spalten sind im Moment noch "fest" (5Spalten). Ich möchte das ganze aber dynamisch realisieren, das der Anwender x Zeilen und y Spalten eingibt.
Wie kann ich das über eine Properties-Datei steuern :confused:
 
Zuletzt bearbeitet:
Brauche input

Original geschrieben von basuhexe
Ich hab ´n Programm geschrieben, welches mir Zufallszahlen in Spalten und Zeilen in eine Datei schreibt. Die Zeilen-Anzahl wird über args gesteuert und die Spalten sind im Moment noch "fest" (5Spalten). Ich möchte das ganze aber dynamisch realisieren, das der Anwender x Zeilen und y Spalten eingibt.
Wie kann ich das über eine Properties-Datei steuern :confused:

Nur um sicher zu gehen:
Du möchtest aus einer properties-Datei auslesen, wie viele Zeilen und Spalten zu generieren sind anstelle einer Übergabe zweier fester Zahlen beim Programmstart?

Code:
	public SchreibeDatei2(int row, int column) {
		NumberGenerator ng = new NumberGenerator(row, column);
		array = ng.getResult();
	} //-- End constructor()
    
	public static void main(String args[]) {
		SchreibeDatei sd = new SchreibeDatei (Integer.parseInt(args[0]));
		sd.saveToFile();
		System.out.println(args[0]);
		//System.out.println(args[1]);
	} //-- End method main

Das funktioniert so natürlich nicht, weil a) falscher Konstruktorname und b) falsche Anzahl Parameter (Übergabe: 1, Erwartung: 2) (siehe fett markierte Stellen)
 
Bin zwar Anfänger aber funktionieren tut es aber ........
aber wie kann ich die Eingabe, steuern :confused:
Der Benutzer soll selber festlegen, wieviele Spalten und Zeilen er haben will
 
>Bin zwar Anfänger aber funktionieren tut es aber ........

Aber nicht mit dem von Dir geposteten Code.

>aber wie kann ich die Eingabe, steuern :confused:
>Der Benutzer soll selber festlegen, wieviele Spalten und Zeilen er haben will

Wie und wo soll er das denn tun? Konsoleneingabe? Kleiner Dialog/Eingabemaske?
 
Ein bißchen Hilfe hat ich schon!:rolleyes:

über Dialog/Eingabemaske, mein Problem ist:
die Eingabe des Benutzers-Übergabe ans Programm, da es ja dynam./flexibel bleiben soll
 
Original geschrieben von basuhexe
über Dialog/Eingabemaske, mein Problem ist:
die Eingabe des Benutzers-Übergabe ans Programm, da es ja dynam./flexibel bleiben soll

Dann musst Du doch lediglich einen JDialog vorneweg öffnen.

Benutze nicht
Code:
public static void main(String args[]) {
SchreibeDatei sd = new SchreibeDatei (Integer.parseInt(args[0]));
sd.saveToFile();
System.out.println(args[0]);
//System.out.println(args[1]);
} //-- End method main

sondern

Code:
public static void main(String args[]) {
MyDialog myDialog = new MyDialog();
myDialog.show();

mit
Code:
class MyDialog extends JDialog

usw.
In dem Dialog legst Du zwei JLabel und zwei JTextField an. Dazu einen JButton, auf dessen Betätigung Du mit der Erzeugung der Datei reagierst.
Dabei liest Du die beiden JTextFields aus (Anz Spalten+Zeilen) und übergibst die Werte an Deine auswertende Methode.
 
Original geschrieben von basuhexe
SORRY-KANN DIR NICHT GANZ FOLGEN :confused:
(Zumindest mit der Übergabe)

Bilder sagen mehr als tausen Worte... ;-)
Ich habs mal eben reingehackt. Ist noch lange nicht perfekt (Buchstaben als Eingabe müssen noch abgefangen werden, Layout kann besser sein,...), aber es funktioniert. Wegen der Übergabe: Achte auf den fett markierten Codeschnipsel. Deine innere Klasse habe ich nicht geändert, nur die main-Methode.

Code:
public class MyDialog 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:");
	JTextField jtfZeilen = new JTextField();
	JTextField jtfSpalten = new JTextField();
	 
	MyDialog()
	{
		this.setSize(300, 300);
		panel.setLayout(new GridLayout(2,2));
		panel.add(jlZeilen);
		panel.add(jtfZeilen);
		panel.add(jlSpalten);
		panel.add(jtfSpalten);
		
		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());
		NumberGenerator ng = new NumberGenerator(iZeilen, iSpalten);
		array = ng.getResult();
		saveToFile();
		System.exit(0);		
	}

	public void saveToFile()
	{
		try
		{
			FileOutputStream fos =
				new FileOutputStream("c:\\Dokumente und Einstellungen\\zufallstest.txt");
			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 zufallstest.txt wurde erstellt");
		}
		catch (FileNotFoundException e)
		{
			System.out.println("Schreiben fehlgeschlagen");
		}
	} //-- End method saveToFile()
	
	private class NumberGenerator
	{
		private int[][] array;

		public NumberGenerator(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() * 10000) + " ");
					array[i][j] = (int) (Math.random() * 10000);
				}
				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;
				int num = 1 + Math.abs(r.nextInt()) % 49000;
				if (!b.get(num))
				{
					b.set(num);
					++cnt;
				}
			}
			for (int i = 5; i <= 49000; ++i)
			{
				if (b.get(i))
				{
					System.out.println(i + " ");
				}
			}
			System.out.println("");
		}
	} //-- End class NumberGenerator
	
	public static void main(String args[])
	{
		MyDialog myDialog = new MyDialog();
		myDialog.show();
	} //-- End method main	
}
 
Zurück