Ironcutain
Grünschnabel
Hallo Leute,
ich bin im Rahmen meiner Mastarbeit auf ein Problem gestoßen und versuche dieses nun mit einem selbstgeschriebenen Java Programm zu lösen und hoffe, dass ihr mich dabei unterstützen könnt. Mit der Java-Programmierung hatte ich vor einigen Jahren in der Anfangsphase meines Bachelorstudiums zutun, daher sind lediglich Grundkentnisse vorhanden. Ich versuche zunächst das grundsätzliche Problem zu beschreiben. Als Ausgangszustand ist eine Datei, die als Ergebnis einer Simulation von einem Programm ausgegeben wird. In dieser Datei steht eine Menge Zeug drin, für mich ist aber nur ein bestimmter Bereich interessant. Einen Ausschnitt aus diesem Bereich sieht man hier:
Der interessante Bereich ist also im Prinzip in 3 Spalten (Element, Knoten und MISES) aufgeteilt. Davon sind nur die Werte in der Spalte "Knoten" und "MISES" von Interesse.
Ich möchte nun ein Programm schreiben, dass folgendermaßen durchgeht:
1. Nehme den ersten Wert von Spalte Knoten (90)
2. Schaue ob dieser Wert in Spalte Knoten noch einmal auftaucht
--> Wenn ja: Berechne Mittelwert aus zugehörigen Werten in Spalte "MISES". Im Beispiel: (999.7+9774)/2
--> Wenn nein: Nehme den einzelnen Wert aus zugehöriger MISES Spalte
4. Schreibe das Ergebnis mit dem zugehörigen Wert aus Spalte "Knoten" in Datei "Biegebalken_Analyse.inp" an Stelle "*TEMPERATURE" in folgender Form (Reihenfolge egal):
Mein Problem ist, dass ich mit dem Gesamtproblem etwas überfordert bin. Das fängt damit an, wie ich dem Programm erklären soll, ab welcher Stelle er anfangen soll die Werte auszuwerten, da halt davor in der Eingabedatei viel steht und danach auch. Ich habe nun bereits angefangen ein Programm zu schreiben. Der Begriff "MISES" taucht in der Eingabedatei nur einmal auf. Daher habe ich ein Programm geschrieben, dass nach dem Begriff "MISES" sucht und mir ausgibt. Das funktioniert schon mal:
Allerdings habe ich keine Idee wie es jetzt weitergeht oder ob es so überhaupt sinnvoll ist. Irgendwie muss man dem Programm jetzt mitteilen "und ab dieser Stelle fange an auszuwerten" und ihm dann auch die Struktur beibringen "LEERZEILEN Wert1 LEERZEILEN Wert2 LEERZEILEN Wert3" und "davon arbeite nur mit Wert 2 und Wert 3". Ich erwarte hier jetzt keine direkte Gesamtlösung. Vielleicht können die Profi's hier das Problem sinnvoll aufteilen und mir "Sichworte" nennen, die zur Lösung des Teilproblems führen, damit ich das Programm sukzessive aufbauen kann.
Ich hoffe ihr könnt mir weiterhelfen.
MFG
Ironcurtain
ich bin im Rahmen meiner Mastarbeit auf ein Problem gestoßen und versuche dieses nun mit einem selbstgeschriebenen Java Programm zu lösen und hoffe, dass ihr mich dabei unterstützen könnt. Mit der Java-Programmierung hatte ich vor einigen Jahren in der Anfangsphase meines Bachelorstudiums zutun, daher sind lediglich Grundkentnisse vorhanden. Ich versuche zunächst das grundsätzliche Problem zu beschreiben. Als Ausgangszustand ist eine Datei, die als Ergebnis einer Simulation von einem Programm ausgegeben wird. In dieser Datei steht eine Menge Zeug drin, für mich ist aber nur ein bestimmter Bereich interessant. Einen Ausschnitt aus diesem Bereich sieht man hier:
Inhalt der auszuwertenden Werte in Datei "Biegebalken_Analyse.dat"
ELEMENT KNOTEN MISES
1 90 999.7
1 89 999.7
2 90 977.4
1230 1649 1.1395E+04
Der interessante Bereich ist also im Prinzip in 3 Spalten (Element, Knoten und MISES) aufgeteilt. Davon sind nur die Werte in der Spalte "Knoten" und "MISES" von Interesse.
Ich möchte nun ein Programm schreiben, dass folgendermaßen durchgeht:
1. Nehme den ersten Wert von Spalte Knoten (90)
2. Schaue ob dieser Wert in Spalte Knoten noch einmal auftaucht
--> Wenn ja: Berechne Mittelwert aus zugehörigen Werten in Spalte "MISES". Im Beispiel: (999.7+9774)/2
--> Wenn nein: Nehme den einzelnen Wert aus zugehöriger MISES Spalte
4. Schreibe das Ergebnis mit dem zugehörigen Wert aus Spalte "Knoten" in Datei "Biegebalken_Analyse.inp" an Stelle "*TEMPERATURE" in folgender Form (Reihenfolge egal):
Ergebnis in der Ausgabedatei:
*TEMPERATURE
90, 988.6
89, 999.7
1649, 1.1395E+04
Mein Problem ist, dass ich mit dem Gesamtproblem etwas überfordert bin. Das fängt damit an, wie ich dem Programm erklären soll, ab welcher Stelle er anfangen soll die Werte auszuwerten, da halt davor in der Eingabedatei viel steht und danach auch. Ich habe nun bereits angefangen ein Programm zu schreiben. Der Begriff "MISES" taucht in der Eingabedatei nur einmal auf. Daher habe ich ein Programm geschrieben, dass nach dem Begriff "MISES" sucht und mir ausgibt. Das funktioniert schon mal:
Code:
import java.io.*;
public class FileSearch
{
public static void main(String args[])
{
FileInputStream fstream = new FileInputStream("Biegebalken_Analyse.dat");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
int lineNum=0;
while ((strLine = br.readLine()) != null)
{
CharSequence arg0 = "MISES";
lineNum++;
if (strLine.contains(arg0))
{
System.out.println(+lineNum);
}
}
}
}
Allerdings habe ich keine Idee wie es jetzt weitergeht oder ob es so überhaupt sinnvoll ist. Irgendwie muss man dem Programm jetzt mitteilen "und ab dieser Stelle fange an auszuwerten" und ihm dann auch die Struktur beibringen "LEERZEILEN Wert1 LEERZEILEN Wert2 LEERZEILEN Wert3" und "davon arbeite nur mit Wert 2 und Wert 3". Ich erwarte hier jetzt keine direkte Gesamtlösung. Vielleicht können die Profi's hier das Problem sinnvoll aufteilen und mir "Sichworte" nennen, die zur Lösung des Teilproblems führen, damit ich das Programm sukzessive aufbauen kann.
Ich hoffe ihr könnt mir weiterhelfen.
MFG
Ironcurtain