es geht um Folgendes:
ein ppm besteht ja nach maxValue eigentlich nur noch aus Zahlen und Leerzeichen.
leider ist es möglich, jeder Zeile einen Kommentar anzuhängen (durch # gekennzeichnet)
jetzt möchte ich diese etwaigen Kommentare entfernen.
wenn eine solche Zeile nun als String vorliegt, also zB:
"123 543 234 355 433 233 # völlig sinnbefreite grafik"
wie kann ich dann alles ab dem "#" abschneiden, wenn ich den Index von # erst zur laufzeit kenne?
if(line.matches("#")){
line = line.substring(0,(line.indexOf("#")-1));}
müsste das nicht alles ab # abschneiden, sofern ein # vorkommt?
line ist ein String.
wenn ich mir danach line ausgeben lasse erscheint ganz frech ein # aufm bildschirm :?:
pls help!!!
weis nich obs hilft aber ich zeig euch mal die ganze Klasse. Sie erzeugt aus nem ppm vom typ P3 ne Instanz von PPMImage. wofür die gut ist, ist hier ja auch egal.
Java:
importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.IOException;publicclassPPMReader{publicstaticPPMImageread(File inputFile)throwsIOException{BufferedReader br =newBufferedReader(newFileReader(inputFile));int width =0;int height =0;int maxVal =0;String[] inhalte;do{String line = br.readLine();if(line.matches("#")){
line = line.substring(0,(line.indexOf("#")-1));}
inhalte = line.split("\\s+");if(inhalte[0].equals("P3")){}elseif(inhalte.length ==1)
maxVal =Integer.valueOf(br.readLine());elseif(inhalte.length ==2){
width =Integer.valueOf(inhalte[0]);
height =Integer.valueOf(inhalte[1]);}}while(inhalte.length !=1&&!(inhalte[0].equals("P3")));PPMImage image =newPPMImage(width, height, maxVal);String aktuelleZeile;// durchläuft alle zeilen, teilt sie nach whitespace, speichert die// entsprechenden zahlen in image.pixelint zeilenIndex =0;while((aktuelleZeile = br.readLine())!=null){if(aktuelleZeile.matches("#")){
aktuelleZeile = aktuelleZeile.substring(0,(aktuelleZeile
.indexOf("#")-1));// Kommentare abschneiden}String[] zeilenInhalt = aktuelleZeile.split("\\s+");if(!zeilenInhalt[0].equals("")){// falls eine Zeile nicht nur aus// nem Kommentar bestandint zahlenIndex =0;int pixelIndex =0;for(String indexDerZahl : zeilenInhalt){int zahl =Integer.parseInt(indexDerZahl);if(zahlenIndex %3==0)
image.setRed(pixelIndex, zeilenIndex, zahl);elseif(zahlenIndex %3==1)
image.setGreen(pixelIndex, zeilenIndex, zahl);elseif(zahlenIndex %3==2)
image.setBlue(pixelIndex, zeilenIndex, zahl);
zahlenIndex++;if(zahlenIndex !=0&& zahlenIndex %3==0)
pixelIndex++;if(zahlenIndex == width)
zeilenIndex++;}}}
br.close();return image;}}
und hier noch die Fehlermeldung:
Exception in thread "main" java.lang.NumberFormatException: For input string: "#"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Integer.parseInt(Integer.java:514)
at PPMReader.read(PPMReader.java:51)
at PPMMain.main(PPMMain.java:11)