Zjištění konce řádků – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Zjištění konce řádků – Java – Fórum – Programujte.comZjištění konce řádků – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Paul
~ Anonymní uživatel
4 příspěvky
3. 12. 2011   #1
-
0
-

Dobrý den,

pomohl by mi někdo prosím s jednoduchým problémem?

Dostal jsem ve škole za úkol napsat program s tímto zadáním :

Mezery: napište program, který přečte vstupní textový soubor a vytvoří výstupní soubor tak, že posloupnost dvou a více mezer nebo znaků konec řádku nahradí jednou mezerou.
Parametry: vstupní soubor, výstupní soubor.

Program už jsem napsal a funguje mi nahrazování dvou a vice mezer, ale nemůžu za boha přijít ani nikde nemůžu najít jak nahradit znak konce řádku mezerou. Tedy hlavně nevím jak ho najít, nahradit to bych zvládl. Zkoušel jsem už /n a další věci a nic mi nešlo. Zatím program vypadá takto:

package semestralni_prace_uvod_sw;
import java.io.*;
public class Main {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("text1.txt");
FileWriter fw = new FileWriter("text2.txt");

boolean hodn=true;
int c;
char b = ' ';
char r ='\r';
char n ='\n';
while ((c = fr.read()) != -1 || (char)c == r+n  ) {
if(((char)c==b) && hodn==true ){
fw.write(" ");
hodn = false;
}
if(b != c){
fw.write((char)c);
hodn=true;
}
}

fr.close();
fw.close();
}
catch (IOException e) {
e.printStackTrace();
        }
    }
}

Předem děkuji za pomoc

Nahlásit jako SPAM
IP: 90.176.82.–
Reklama
Reklama
Paul
~ Anonymní uživatel
4 příspěvky
3. 12. 2011   #2
-
0
-

#1 Paul
Pardon takto vypadá:

package semestralni_prace_uvod_sw;
import java.io.*;
public class Main {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("text1.txt");
FileWriter fw = new FileWriter("text2.txt");

boolean hodn=true;
int c;
char b = ' ';
char r ='\r';
char n ='\n';
while ((c = fr.read()) != -1 ) {
if(((char)c==b) && hodn==true || (char)c == r+n ){
fw.write(" ");
hodn = false;
}
if(b != c){
fw.write((char)c);
hodn=true;
}
}

fr.close();
fw.close();
}
catch (IOException e) {
e.printStackTrace();
        }
    }
}

Nahlásit jako SPAM
IP: 90.176.82.–
zlz
~ Anonymní uživatel
634 příspěvků
4. 12. 2011   #3
-
0
-

r+n ti sečte hodnoty těch znaků (13+10), takže testuješ špatnou hodnotu. A i kdyby to dělalo "spojení", tak se řetězec dvou znaků nebude rovnat jednomu znaku. Musíš \r a \n testovat zvlášť.

Jestli jsem správně pochopil, co se má dělat s těmi konci řádků, tak to jde jednoduše třeba takhle

int prev = -1, c;
while ((c = fr.read()) != -1) {
    if (c == '\r' || c == '\n')
        c = ' ';
    if (c != ' ' || prev != ' ')
        fw.write(c);
    prev = c;
}
Nahlásit jako SPAM
IP: 213.211.51.–
Paul
~ Anonymní uživatel
4 příspěvky
4. 12. 2011   #4
-
0
-

#3 zlz
Zadání si pochopil dobře funguje to přesně jak má. Tvůj program je mnohem jednodušší než ten můj :-P Klíčová pro mě byla ta myšlenka nejdříve otestovat konec řádku a pokud tam je tak ho nahradit mezerou a až pak testovat mezery.

Mockrát ti děkuji!

Nahlásit jako SPAM
IP: 90.176.82.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 25 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý