Servus zusammen,
Ausgangssituation:
ich hab eine Textdatei, welche ich einlesen möchte, funktioniert soweit auch bis auf den unteren bereich in dem die messwerte stehen
die datei wähle ich ein filechooser aus - funktioniert
dann in konverter packen - funktioniert teilweise, die kopfdaten (alles bis #Messwerte)
in der while-schleife spukt es und ich bin mir fällt nich auf wo der fehler liegt
die ausgabe messwerte ist diese
Der erste wert in jeder messwertzeile soll für alle wertepaare der zeile übernommen werden
due 13 soll eine fortlaufende nummerierung sein und die 75 sollte 200, 133.33 und 75 sein
Meine frage, hat jmd spontan nen einfall wo mein geist hockt, der die werteübernahme vermasselt?
grüße und danke an alle Ratenden und Ratgebenden ;-)
Ausgangssituation:
ich hab eine Textdatei, welche ich einlesen möchte, funktioniert soweit auch bis auf den unteren bereich in dem die messwerte stehen
die datei wähle ich ein filechooser aus - funktioniert
Java:
import except.MyException;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import main.Top;
/**
*
* @author Christian
*/
public class FileChooser{
Top t =new Top();
MyException mx =new MyException();
/**
* Methode öffnet einen Filechooser ( Browser) mit dem man nach der InputdateTimei
* suchen kann
* Über FileFilter die Auswahl der zu öffnenden Dateien einschränken
*
* @return String mit den Angaben Pfad und Dateiname
*/
public File openFile(){
JFileChooser jfc =new JFileChooser(); //Erstellen des Filechooser
jfc.showOpenDialog( jfc); //FileChooser vom Typ SaveDialog
File file =jfc.getSelectedFile(); //Auslesen des Augewählten Pfades
return file; //Rückgabe des Strings => Pfad und Dateiname
}
/**
* Methode öffnet einen Filechooser( Browser) in dem man den Speicherplatz
* und den Dateinamen eintragen kann, in dem später das Protoll gespeichert
* werden soll.
*
* @return String mit den Angaben Pfad und Dateiname
*/
public String saveFile(){
String pfad;
JFileChooser jfc =new JFileChooser();
jfc.setFileFilter( new FileNameExtensionFilter( "Textdateien", ".txt"));
jfc.showSaveDialog( jfc);
File f =jfc.getSelectedFile();
if( f ==null){
String datname =t.dateTime();
mx.speichernFelder( datname);
pfad =datname;
} else{
pfad =f.toString();
}
return pfad;
}
}
dann in konverter packen - funktioniert teilweise, die kopfdaten (alles bis #Messwerte)
Java:
import daten.DatenMesswerte;
import daten.DatenTreppen;
import except.ParseThought;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
* @author Christian
*/
public class Konverter{
ParseThought pt =new ParseThought();
DatenMesswerte dm =DatenMesswerte.getInstance();
DatenTreppen dt =DatenTreppen.getInstance();
/**
* Methode für die Unterteilung in Kopf und Probenwerte
* @param list ArrayList<> mit den Werten aus einer Datei
* @return
*/
public double[][] messwerteKonverter( ArrayList<String> list){
String line;
double[][] werte=null;
boolean kommentar;
for( int lines =0; lines <list.size(); lines++){
line =list.get( lines);
line =line.trim();
kommentar =line.contains( "#");
if( kommentar ==true){
if( line.charAt( 0) =='#'){
if( line.contains( "#messwerte")){
List<String> sublist = list.subList( lines +1, list.size());
werte =readMesswerte( sublist);
break;
} else{}
} else{
for( int i =0; i <line.length(); i++){
if( line.charAt( i) =='#'){
line =line.substring(0, i);
break;
} else{}
}
readHeader( line);
}
} else{
readHeader( line);
}
}
return werte;
}
/**
* Methode prüft welcher Wert ausgelesen worden ist und schreibt diesen in
* in die Instanz DatenMesswerte
* @param line Ausgelesene Zeile mit den Werten
*/
private void readHeader( String line){
String typ;
String valueString;
Scanner s;
s =new Scanner( line);
typ =s.next();
valueString = line.substring( typ.length());
valueString =valueString.trim();
valueString =valueString.replace( ',', '.');
switch( typ){
case "r:":
dm.setR( pt.pFloat( valueString, "r"));
break;
case "rm:":
dm.setRm( pt.pFloat( valueString, "rm"));
break;
case "Ausfallwahrscheinlichkeit:":
dm.setAusfallwahrscheinlichkeit( pt.pFloat( valueString, "Ausfallwahrscheinlichkeit"));
break;
case "ng:":
dm.setNG( pt.pInt( valueString, "Ng"));
break;
case "belastung:":
dm.setProbenbelastung( pt.pByte( valueString, "Probenbelastung"));
break;
case "probenanzahl:":
dm.setProbenanzahl( pt.pInt( valueString, "Probenanzahl"));
break;
case "dauerfestigkeit:":
dm.setDauerfestigkeit( pt.pInt( valueString, "Dauerfestigkeitsbereich"));
break;
case "probentyp:":
dm.setProbentyp( pt.pByte( valueString, "Probentyp"));
break;
}
}
/**
* Methode übernimmt die Probenwerte
* @param line
*/
private double[][] readMesswerte( List<String> line){
int lineCount =1;
ArrayList<double[]> result =new ArrayList<>();
double[] werte =new double[ 4];
Scanner scanner;
String amplitude;
double amp;
String schwingspiel;
double swing;
String probenverlauf;
double verlauf;
for( int lines =0; lines <line.size(); lines++){
String in =line.get( lines);
if( in.contains( "#")){
in = in.substring( 0, in.indexOf( '#'));
}
scanner =new Scanner( in);
amplitude =scanner.next();
amp = pt.pDouble( amplitude, "Amplitude");
while( scanner.hasNext()){
werte[ 0] =lineCount;
werte[ 1] =amp; // amp
schwingspiel =scanner.next();
swing =pt.pDouble( schwingspiel, "Scwhingspiel");
werte[ 2] =swing; //swing
probenverlauf =scanner.next();
verlauf =pt.pDouble( probenverlauf, "Scwhingspiel");
werte[ 3] =verlauf; //Verlauf
result.add( werte);
lineCount +=1;
}
System.out.println( "next level");
}
//einzelne Wertevektoren in eine Matrix überführen
double[][] uebergabe = new double[ result.size()][4];
for( int row= 0; row <uebergabe.length; row++){
for( int col =0; col <uebergabe[ row].length; col++){
werte =result.get( row);
uebergabe[ row][ col] = werte[col];
}
}
return uebergabe;
// dm.setMesswerteDouble( uebergabe);
}
}
in der while-schleife spukt es und ich bin mir fällt nich auf wo der fehler liegt
die ausgabe messwerte ist diese
Der erste wert in jeder messwertzeile soll für alle wertepaare der zeile übernommen werden
due 13 soll eine fortlaufende nummerierung sein und die 75 sollte 200, 133.33 und 75 sein
run:
next level
next level
next level
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
BUILD SUCCESSFUL (total time: 11 seconds)
next level
next level
next level
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
13.0 | 75.0 | 715234.0 | 0.0 |
BUILD SUCCESSFUL (total time: 11 seconds)
# Alles was hinter '#' eingetragen wird als Kommentar angesehen und ignoriert
# Kommazahlen sind als x.41234 zu schreiben
Ausfallwahrscheinlichkeit: 1.282
r: 0.1
rm: 800
ng: 2000000 # kann noch nicht als z.b. 2e6 eingetragen werden
belastung: 1 #Spannung[MPa] =1 Kraft[kN] =5
probenanzahl: 13
probentyp: 4 #1 =Standardprobe, 2 =Schlitzprobe, 3 =Lochprobe, 4 =Kerbprobe, 5 =freiprobe
dauerfestigkeit: 120
#messwerte Amplitude eingeben N=Schwingspielzahl 0 =für Brüche 1=für Druchläufer
# jeweils erster wert der Zeile für weiter wertepaare übernehmen
200.00 14736 0 15728 0 16327 0 14022 0
133.33 60680 0 63262 0 57736 0 152823 1
75.00 453206 0 476188 0 381069 0 413101 0 715234 0
# Kommazahlen sind als x.41234 zu schreiben
Ausfallwahrscheinlichkeit: 1.282
r: 0.1
rm: 800
ng: 2000000 # kann noch nicht als z.b. 2e6 eingetragen werden
belastung: 1 #Spannung[MPa] =1 Kraft[kN] =5
probenanzahl: 13
probentyp: 4 #1 =Standardprobe, 2 =Schlitzprobe, 3 =Lochprobe, 4 =Kerbprobe, 5 =freiprobe
dauerfestigkeit: 120
#messwerte Amplitude eingeben N=Schwingspielzahl 0 =für Brüche 1=für Druchläufer
# jeweils erster wert der Zeile für weiter wertepaare übernehmen
200.00 14736 0 15728 0 16327 0 14022 0
133.33 60680 0 63262 0 57736 0 152823 1
75.00 453206 0 476188 0 381069 0 413101 0 715234 0
Meine frage, hat jmd spontan nen einfall wo mein geist hockt, der die werteübernahme vermasselt?
grüße und danke an alle Ratenden und Ratgebenden ;-)