lejligheder.setSide(lejlighedsSide); while (dele.hasMoreTokens()) { String objekt = dele.nextToken(); double måleaflæsning = Double.parseDouble(dele.nextToken());
if (objekt.charAt(0)=='A') { // Hvis det er et rum (radiator) int rumID = Integer.parseInt(objekt.substring(1,2)); Rum rum = new Rum(måleaflæsning,rumID); lejligheder.TilføjRum(rum); } else if (objekt.charAt(0)=='G') { // Hvis det er en garage int garageID = Integer. parseInt(objekt.substring(1,2)); Garage garage = new Garage(måleaflæsning,garageID); lejligheder.addGarage(garage); } } bygning.Tilføj(lejligheder);
jeg tænkte på om jeg ikke bare kan nøjes med en if sætning inde i while løkken, som så undersøges sidste linie i filen test.txt, og derefter gemmer sidste linie i en "variabel/attribut"... håber du forstår mig
lejligheder.setSide(lejlighedsSide); while (dele.hasMoreTokens()) { String objekt = dele.nextToken(); double måleaflæsning = Double.parseDouble(dele.nextToken());
if (objekt.charAt(0)=='A') { // Hvis det er et rum (radiator) int rumID = Integer.parseInt(objekt.substring(1,2)); Rum rum = new Rum(måleaflæsning,rumID); lejligheder.TilføjRum(rum); } else if (objekt.charAt(0)=='G') { // Hvis det er en garage int garageID = Integer. parseInt(objekt.substring(1,2)); Garage garage = new Garage(måleaflæsning,garageID); lejligheder.addGarage(garage); } } bygning.Tilføj(lejligheder);
nej desværre kalp.. det ændrer ikke noget..altså jeg får sidste linie udskrevet... men den udskrives som et lejlighedsID, altså kun som to tal... plus at den bliver sorteret, med alt andet der udskrives... hvilket jo giver forkert udskrift... jeg tænker nærmere på om jeg ikke kan lave en løkke efter her:
int garageID = Integer. parseInt(objekt.substring(1,2)); Garage garage = new Garage(måleaflæsning,garageID); lejligheder.addGarage(garage);
som på en måde tjekker om sidste linie indeholder en double, og hvis sandt, så skal den gemme doublen i en double udgift... forstår du mig?
public class ReverseFileReader { private String filename; private RandomAccessFile randomfile; private long position;
public ReverseFileReader (String filename) throws Exception { // Open up a random access file this.randomfile=new RandomAccessFile(filename,"r"); // Set our seek position to the end of the file this.position=this.randomfile.length();
// Seek to the end of the file this.randomfile.seek(this.position); //Move our pointer to the first valid position at the end of the file. String thisLine=this.randomfile.readLine(); while(thisLine == null ) { this.position--; this.randomfile.seek(this.position); thisLine=this.randomfile.readLine(); this.randomfile.seek(this.position); } }
// Read one line from the current position towards the beginning public String readLine() throws Exception { int thisCode; char thisChar; String finalLine="";
// If our position is less than zero already, we are at the beginning // with nothing to return. if ( this.position < 0 ) { return null; }
for(;;) { // we've reached the beginning of the file if ( this.position < 0 ) { break; } // Seek to the current position this.randomfile.seek(this.position);
// Read the data at this position thisCode=this.randomfile.readByte(); thisChar=(char)thisCode;
// If this is a line break or carrige return, stop looking if (thisCode == 13 || thisCode == 10 ) { // See if the previous character is also a line break character. // this accounts for crlf combinations this.randomfile.seek(this.position-1); int nextCode=this.randomfile.readByte(); if ( (thisCode == 10 && nextCode == 13) || (thisCode == 13 && nextCode == 10) ) { // If we found another linebreak character, ignore it this.position=this.position-1; } // Move the pointer for the next readline this.position--; break; } else { // This is a valid character append to the string finalLine=thisChar + finalLine; } // Move to the next char this.position--; } // return the line return finalLine; } }
kalp... jeg sad også og tænkte på det gøre det på den måde... men altså det må kunne gøre simplere... for alt den kode du lige forslog er simpelthen for meget, og hvis jeg benytter det, så bliver det alt for uoverskueligt i min egen kode... jeg er sikker på at der er nogen simplere... ved du om man kan lave om på funktion StringTokenizer, sådan at den stopper med at dele værdierne ud til forskellege variabler/attributter, lige inden sidste linie? For mit problem i øjeblikket er netop at den jo også indlæser sidste linie og indeler den til lejlighedsværdi, da værdi på sidste linie er et tal.
hej igen... jeg har fundet ud af det... og det lykkes for mig nu at få vist det jeg vil have :) tusind tak for jeres forsøg på hjælp... lav et svar begge to så i kan få tildelt point begge to.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.