Замена слов в строке

313
13 мая 2017, 18:57

Прочитать код программы и в каждом слове, короче 5-ти символов заменить все символы на звездочки. Путь к программе и название нового файла вписываются в командной строке.
Не знаю, как это реaлизовать, кое-как написал, но в файл выводится только первое слово программы.

package q;
import java.lang.StringBuffer;
import java.util.Scanner;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
public class Oleg {
    public static void main(String[]args) throws IOException{
        //проверка на кол-во введенных данных
        if(args.length!=2){
            System.out.println("Enter the command-line arguments");
            System.exit(1);
        }
        //проверка существования исходного файла
        File sourseFile = new File(args[0]);
        if(!sourseFile.exists()){
            System.out.println("Source file"+args[0]+"does not exist"); 
            System.exit(2);
            }
        //проверка существования целевога файла
        File targetFile = new File(args[1]); 
        if(targetFile.exists())
            System.out.println("Target file "+args[1]+" already exists");
        //создаем Scanner для ввода и  PrintWriter для вывода
            Scanner input = new Scanner(sourseFile);
        PrintWriter output = new PrintWriter(targetFile);
        int k=0;
        while(input.hasNext()){
            String s = new String(input.next());
            StringBuffer s1 = new StringBuffer("");
            if(s.length()<5) {
                for(int i=0;i<s.length();i++)
                    k++;
            while(k<s.length()){
                s1.append("*");
            }
            s.replace(s, s1);
        }
            output.print(s);
        output.close();
        }
}
}
Answer 1

Вы закрываете файл в который выводите output.close(); эту строчку нужно писать после прохождения всего цикла.

А вот и код вам поправил.

public static void main(String [] args)  throws IOException {
        if(args.length!=2){
            System.out.println("Enter the command-line arguments");
            System.exit(1);
        }
        File sourseFile = new File(args[0]);
        if(!sourseFile.exists()){
            System.out.println("Source file "+args[0]+" does not exist");
            System.exit(2);
        }
        File targetFile = new File(args[1]);
        if(targetFile.exists())
            System.out.println("Target file "+args[1]+" already exists");
        Scanner input = new Scanner(sourseFile);
        PrintWriter output = new PrintWriter(targetFile);
        int k=0;
        while(input.hasNext()){
            String s = new String(input.next());
            StringBuffer s1 = new StringBuffer();
            int sz = s.length();
            if(sz<5) {
                for(int i=0;i<sz;i++) s1.append("*");
                s1.append('\n');
                output.print(s1.toString());
            } else output.print(s+'\n');
        }
        output.close();
    }
READ ALSO
Не запускается следующее активити? [требует правки]

Не запускается следующее активити? [требует правки]

ЗдравствуйтеУ меня не запускается следующее активити

286
#1 Не получается установить непрерывное соединение клиент-сервер (Java-Twisted) - Android

#1 Не получается установить непрерывное соединение клиент-сервер (Java-Twisted) - Android

Пытаюсь настроить непрерывный обмен пакетами между клиентом и сервером

321
Подключение библиотеки jsoup к intellij idea

Подключение библиотеки jsoup к intellij idea

Не получается подключить библиотеку jsoupПоиск в интернете особо не помог, проблема осталась

359
Hibernate: проверка грамматики

Hibernate: проверка грамматики

Можно ли проверить через Hibernate грамматику конкретного SQL диалекта (Postgres, MySQL, Oracle и тд

200