Werte per Zufall aus einer Datei ziehen und in eine neue Datei schreiben

analogo

Mitglied
Hallo..

ich möchte per Java aus einer Datei.txt Zahlen per Zufall auswählen und in eine neue Datei speichern.

Folgendermaßen ist Datei.txt aufgebaut:

Setting1=45,63,39
Setting2=56,25,45,93
Setting3=38,47,19,52,85
... usw.

Wie macht man es nun am einfachsten, um z.B. von "Setting1" nur eine der 3 Zahlen zufällig auszuwählen und in eine neue Datei als 1 Byte (8 bit) zu schreiben? Die Anzahl der Zahlen bei jedem Setting variieren (maximal bis 127), aber es soll immer nur eine Zahl des jeweiligen Settings zufällig ausgewählt werden. Die Anzahl der Settings soll ebenfalls maximal 127 sein.
 
Zuletzt bearbeitet:
eventuell könntest du die Textdatei Zeile für Zeile einlesen.
Anschließend die ersten 9 Zeichen löschen, bis zum "=" halt.

Und danach mit split beim "," trennen. Diese Zahlen hast dann in einem Array. Mit .length() kannst du die Länge (Anzahl der Zahlen) ermitteln. und mit der Klasse Random oder Math.random() kannst du dir dann eine Zahl generieren lassen. Diese übergibst du als index und somit hast du deine Zufallszahl.
Anschließend kannst es mit dem BufferedWriter wieder in eine Textdatei schreiben.
 
Das Java Programm liest die txt-Datei per FileInputStream aus. Also muss ich Array nutzen?

In dem Java Programm lasse ich schon aus einem ZahlenBereich (z.B. von 0-127) Zahlen berechnen, aber nun muss ich noch eine Funktion integrieren, die nur bestimmte Zahlen zufällig auswählt. Dafür nutze ich getProperty. Geht das vielleicht auch damit anstatt mit Array?
 
eventuell könntest du die Textdatei Zeile für Zeile einlesen.
Anschließend die ersten 9 Zeichen löschen, bis zum "=" halt.

Und danach mit split beim "," trennen. Diese Zahlen hast dann in einem Array. Mit .length() kannst du die Länge (Anzahl der Zahlen) ermitteln. und mit der Klasse Random oder Math.random() kannst du dir dann eine Zahl generieren lassen. Diese übergibst du als index und somit hast du deine Zufallszahl.
Anschließend kannst es mit dem BufferedWriter wieder in eine Textdatei schreiben.

oder einfach als Properties einlesen und sich das ganze parsen, loeschen sparen
 
oder einfach als Properties einlesen und sich das ganze parsen, loeschen sparen

Sagt mir leider nichts, werde es mir morgen mal anschauen, dass ich auch mitreden kann 😳



Java:
import java.io.*;

public class Test 
    {
	
		static String test;
	
        public static void main (String[] args) {
       
        	String setting1 = "Setting3=38,47,19,52,85";		// test String
        	
        	
        	setting1 = setting1.substring(9, setting1.length());
        	System.out.println(setting1);
        	
        	String zeile = null;
    		try{
    			BufferedReader reader = new BufferedReader(new FileReader("Datei.txt"));
    			
    			while((zeile = reader.readLine()) != null){	// solang die nächste Zeile nicht leer ist mach weiter
    				
    				zeile = zeile.substring(9, setting1.length());
    				String[]items = zeile.split(",");
    				int zufallszahl = (int) (Math.random()* items.length+1);		// bei dem Random Zeugs bin ich mir nie sicher.
    				test = items[zufallszahl];										//Mir wurde auch mal gesagt man sollte die Klasse Random verwenden
    				// Da es schon spät ist und ich morgen auf muss den String test musst du einfach noch mit einem FileWriter in eine Datei schreiben. 
    			}
    			reader.close();
    			
    		}catch(IOException ex){
    			ex.printStackTrace();
    		}	
          }
        	
        }

Ich hätte es so ähnlich wie hier gemacht. Hab es jetzt aber nicht getestet, ob ein Fehler kommt. Ansonsten bitte einfach darauf hinweisen und wenn es einfach nur "crap" ist was ich da fabriziert habe, kann es natürlich auch ein Admin löschen
 
Java:
    				zeile = zeile.substring(9, setting1.length());
Hier ebenfalls besser split verwenden, anstelle von substring mit einem festen Wert.
Java:
    				int zufallszahl = (int) (Math.random()* items.length+1);		// bei dem Random Zeugs bin ich mir nie sicher.
Benötigt wird eine Zahl zwischen [0, items.length-1] also ohne
Code:
+1
 

Neue Themen


Zurück
Oben