Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

δηλαδή το enter που θα πατήσω στο txt πως μεταφράζεται σε κώδικα :

 

>
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class L9A1 {
   public static void main(String[] args){
    FileReader fr;
    BufferedReader br;
   
    boolean foundSpace = false,foundPaula=false;
    try{
	    fr = new FileReader("C:\\javaNetPics\\names.txt");
	    br = new BufferedReader(fr);
	    while ( br.ready() ) // check if stream is ready to be read
	    {
		    char ch = (char)br.read();
		    //diabasma xarakthra-xarakthra
		    System.out.print( ch );
		    if (ch==' '){foundSpace = true;}
		    if (ch=='-'){foundPaula = true;}
		    if(/*εδώ τι βάζω ώστε να ελένξω τη ροή*/){
			    if(foundSpace==false) {throw new wrongFormatException();}
			    if(foundPaula==false) {throw new wrongFormatException();}
			    foundSpace=false;
			    foundPaula=false;
		    }  
	    }
	    br.close();
    }
    catch ( FileNotFoundException e ) {
	    System.out.println( "File not found" );
    }
    catch( IOException e ) {
	    System.out.println( "Read error" );
    }
    catch(wrongFormatException e){
			    System.out.println(e.toString());
    }
   }
}

 

ευχαριστώ όποια βοήθεια!

Δημοσ.

η αλήθεια είναι ότι το δοκίμασα και δεν εκτελούνται ta stats που έχω μέσα στην if.

θεώρησα ότι μπορεί να είναι διαφορετική η εντολή..

τι θα μπορούσα να δοκιμάσω ώστε να καταλαβαίνω πότε αλλάζει γραμμή μέσα στο txt..?

Δημοσ.

Εγώ ποτέ δεν τσέκαρα έτσι για αλλαγή γραμμής αλλά έχω καιρό να ασχοληθώ οπότε πάω πάσο...!!

Για να τσεκάρει και θα μας πει!

 

Πάντως βρήκα αυτό ψάχνοντας τριγύρω:

 

Windows uses "\n", Mac uses "\r", and Linux uses "\r\n" for newline.

Δημοσ.

Το new line στα windows είναι 2 χαρακτήρες "\r\n" δηλαδή ο χαρακτήρας '\r' και αμμέσως μετά ο χαρακτήρας '\n'

 

δηλαδή πως το γράφω?

 

"\r\n" μου χτυπάει λάθος για στρινγκ -σωστό αφού έχω δηλώσει το ch χαρακτήρα

'\r\n' μου χτυπάει αντιστοιχο λάθος με πάνω αλλά εναλλάξ..

Δημοσ.

Αν ισχύει αυτό που λέει ο moukoublen τότε πρέπει να τα τσεκάρεις σαν δύο ξεχωριστούς χαρακτήρες.

Ένας τρόπος είναι κάπως έτσι:

>
while ( br.ready() ) // check if stream is ready to be read
{
char ch = (char)br.read();
//diabasma xarakthra-xarakthra
System.out.print( ch );
if (ch==' '){foundSpace = true;}
if (ch=='-'){foundPaula = true;}
if(ch=='\r' && br.read() == '\n'){
  if(foundSpace==false) {throw new wrongFormatException();}
  if(foundPaula==false) {throw new wrongFormatException();}
  foundSpace=false;
  foundPaula=false;
  }
}

 

Εύχομαι να μην έχω γράψει μλκια μέσα στην if και να γίνεται στην java αυτό που έκανα! (να μπορώ να διαβάσω και να ελέγξω την ίδια στιγμή τον επόμενο χαρακτήρα)

Αν δεν γίνεται μπορείς να ξαναδιαβάσεις χαρακτήρα με τα τον \r να τον αποθηκεύσεις στην ch πάλι και να το ελέγξεις με άλλη μια if.

Δημοσ.

Αν ισχύει αυτό που λέει ο moukoublen τότε πρέπει να τα τσεκάρεις σαν δύο ξεχωριστούς χαρακτήρες.

Ένας τρόπος είναι κάπως έτσι:

>
while ( br.ready() ) // check if stream is ready to be read
{
char ch = (char)br.read();
//diabasma xarakthra-xarakthra
System.out.print( ch );
if (ch==' '){foundSpace = true;}
if (ch=='-'){foundPaula = true;}
if(ch=='\r' && br.read() == '\n'){
if(foundSpace==false) {throw new wrongFormatException();}
if(foundPaula==false) {throw new wrongFormatException();}
foundSpace=false;
foundPaula=false;
}
}

 

Εύχομαι να μην έχω γράψει μλκια μέσα στην if και να γίνεται στην java αυτό που έκανα! (να μπορώ να διαβάσω και να ελέγξω την ίδια στιγμή τον επόμενο χαρακτήρα)

Αν δεν γίνεται μπορείς να ξαναδιαβάσεις χαρακτήρα με τα τον \r να τον αποθηκεύσεις στην ch πάλι και να το ελέγξεις με άλλη μια if.

 

καμία τύχη.....

 

Ουσιαστικά θέλω στο τέλος κάθε γραμμης να resetαρο τις μεταβλητές... και επίσης θέλω να πετάει και τις εξαιρέσεις. αν δεν βάλω αυτό τον έλεγχο τότε για κάθε γράμμα θα γίνεται ο έλεγχος και αυτό είναι λάθος...

Δημοσ.

Επειδή θεωρώ λάθος να ανοίγω ένα topic και να μη παραθέτω τη λύση του εαν τη βρω :

 

>
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class L9A1 {
    public static void main(String[] args){
		    FileReader fr;
		    BufferedReader br;
	  
		    boolean foundSpace = false,foundPaula=false;
		   
		    char[] arr;
		   
		    ArrayList<String> eggrafes = new ArrayList<>();
		   
		    try{
				    fr = new FileReader("C:\\javaNetPics\\names.txt");
				    br = new BufferedReader(fr);String str ;
				    // diabasma grammh-grammh
				    while( (str=br.readLine()) != null){
					    System.out.println( str );
					    arr = str.toCharArray();
					    try{
						    for(int i=0;i<arr.length;i++){
							    if (arr[i] == ' '){foundSpace = true;}
							    if (arr[i] == '-'){foundPaula = true;}
							    if (i == arr.length-1){
								    if(foundSpace==false) {throw new wrongFormatException();}
								    if(foundPaula==false) {throw new wrongFormatException();}
								    foundSpace=false;
								    foundPaula=false;
								    eggrafes.add(str);
							    }
						   
						    }
					    }
					    catch(wrongFormatException e){
								    System.out.println(e.toString());
					    }
				    }
				    br.close();
				   
				    FileWriter newfile = new FileWriter("C:\\javaNetPics\\newfile.txt");
				    for(int i=0;i<eggrafes.size();i++){
					    System.out.println(eggrafes.get(i));
					    String source = eggrafes.get(i);
					   
					    String[] splits1,splits2;
					    splits1 = source.split(" ");
					    splits2 = splits1[1].split("-");
					   
					    newfile.write(splits1[0]+" | "+splits2[0]+" | "+splits2[1]+"\r\n");
				    }
				    newfile.close();
		    }
		    catch ( FileNotFoundException e ) {
				    System.out.println( "File not found" );
		    }
		    catch( IOException e ) {
				    System.out.println( "Read error" );
		    }
    }
}

 

πιο σωστά για την αλλαγή της γραμμής να χρησιμοποιειται το null και αν χρειάζεται να γίνει έλεγχος χαρακτήρων να γίνεται μέσα απο το String.

 

Επίσης η εντολή για το netbeans τουλάχιστον που δουλεύω εγώ για αλλαγή γραμμής ειναι \r\n

 

ευχαριστώ για τον κόπο σας οι παραπάνω :-D

Δημοσ.

Επειδή θεωρώ λάθος να ανοίγω ένα topic και να μη παραθέτω τη λύση του εαν τη βρω :

 

 

πιο σωστά για την αλλαγή της γραμμής να χρησιμοποιειται το null και αν χρειάζεται να γίνει έλεγχος χαρακτήρων να γίνεται μέσα απο το String.

 

 

 

Το null δε χρησιμοποιείται για την αλλαγή της γραμμής. Η readline σου διαβάζει την κάθε γραμμή. Το null σου δείχνει πότε τελείωσε όλο το κείμενο σου.

Δημοσ.

Το null δε χρησιμοποιείται για την αλλαγή της γραμμής. Η readline σου διαβάζει την κάθε γραμμή. Το null σου δείχνει πότε τελείωσε όλο το κείμενο σου.

 

Τότε λοιπόν... Ότι είπε ο αποπάνω :whistle: :-D

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...