Пятница, 2025-02-07, 23:48:26
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Подсчет слов (букв) в файле
CHerryДата: Среда, 2011-09-21, 22:10:42 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 141
Репутация: 3732
Статус: Offline
1. В определенном файле посчитать слова, а возможно и буквы.
2. К предыдущему решению квадратных уравнений добавить обработку разных исключений
3. Найти модель UML диаграмм, ER диаграмм для различных проектов.
 
j_todeskyДата: Четверг, 2011-09-22, 21:46:14 | Сообщение # 2
Рядовой
Группа: Проверенные
Сообщений: 18
Репутация: 1
Статус: Offline
Написать-то написал, но файл у меня открыть так и не получилось ( постоянно не находит файл ! Может кто какую-то ошибку найдет !?

import java.util.*;
public class Count
{
public static String readFile()
{
String strLine=null;
try
{
FileInputStream in = new FileInputStream("CrazyText.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
while((strLine=br.readLine())!=null)
{
System.out.println(strLine);
}
}
catch (Exception e)
{
System.out.println(e);
}
return strLine ;
}
public static void main(String[] args)//throws Exception
{
String b=readFile();
String [] text = b.split("\\s");
int count = 0;
for( int i=0; i< text.length; i++)
{
if (text[i]!= null&& !"".equals(text[i]))
{
count++;
}
}
System.out.println("the quantity of words = "+count);
String tg= b.replace(" ","");
char [] stringArray;
stringArray=tg.toCharArray();
char [] letters= stringArray;
int lettersCount=0;

for (int j=0;j<letters.length; j++)
{
if(letters[j]!=0)
{
lettersCount++;
}
}
System.out.println("The quantity of letters = "+lettersCount);



}
}
 
CHerryДата: Пятница, 2011-09-23, 02:11:57 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 141
Репутация: 3732
Статус: Offline
Quote (j_todesky)
Написать-то написал, но файл у меня открыть так и не получилось ( постоянно не находит файл ! Может кто какую-то ошибку найдет !?

Попробуй напиши полный путь к своему файлу
FileInputStream in = new FileInputStream("D:\\example\\CrazyText.txt");

А каталогом по умолчанию где создаются и читаютсяфайлы ...\workspace\(имя проекта)\(имя файла), попробуй перемести в папку с проектом.

У меня твой код работает, но потом что-то печатает и вылетает :
Exception in thread "main" java.lang.NullPointerException
at Count.main(Count.java:26)

в 26 строке вот что:
....
25 public static void main(String[] args)//throws Exception
26 {
....
 
CHerryДата: Пятница, 2011-09-23, 03:24:18 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 141
Репутация: 3732
Статус: Offline
Code
import java.io.*;

public class FileProcessing {
      
     // точка входа
     public static void main(String[] args) {
         countCharInTheFile(existFile("D:\\java\\book\\Thinking in Java.txt"));   
     }  

     // открываем файл, а если его нет то создаем
     static File existFile (String fileName){
         //создаем экземпляр класса File и ассоцииуем с нашим файлом
         File textFile = new File(fileName);

         if(textFile.isFile()){
         //если файл существует
             System.out.println("Filename:\t" + textFile.getName());
             System.out.println("Path:"+ textFile.getAbsolutePath());
             System.out.println("Filesize:\t" + textFile.length());
         }
         else { // если файла нет, создаем
             System.out.println("File " + textFile.getName() + " not found.");
             try {
                 textFile.createNewFile();
             } catch (IOException e) {
                 // TODO Auto-generated catch block
                 System.out.println("Can not create the file.");
                 e.printStackTrace();
             }
             System.out.println("File " + textFile.getName() + " created in :"+ textFile.getPath());
         }
          
         return textFile;
     }
     // выводим  
     static void countCharInTheFile(File textFile){
          
         // считываем в BufferedReader
         BufferedReader BufferedBlock;
         try {
             BufferedBlock = new BufferedReader(new FileReader(textFile));
         } catch (FileNotFoundException e) {
             // TODO Auto-generated catch block
             System.out.println("FileNotFound");
             e.printStackTrace();
             return;
         }
         String TextBlock;
         int stringCount=0;
         int countSimbol[] = new int[107];  //массив для накопления суммирования количества по каждому символу
         // ЁЂЃЄЅІЇЈЉЊЋЌ?ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя?ёђѓєѕії
                    
         try {
             while ((TextBlock = BufferedBlock.readLine())!= null) {
                 stringCount++;          // считаем количество обрабатываемых строк
                 int i=0;                // индекс для масива simbol[]
                  
                 // перебор кодовой таблицы символов
                 // ЁЂЃЄЅІЇЈЉЊЋЌ?ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя?ёђѓєѕії
                 for (char utfChar='Ё';utfChar<='ї';utfChar++){  
                     int rate=countCharInString(TextBlock,utfChar); // подсчет количества текущего символа в текстовом блоке
                     i++;
                     countSimbol[i] += rate;
                         if (rate>0) {
                             System.out.println("String#"+stringCount+" "+"char-"+utfChar+" found-"+rate);
                         }
                 }
                          
              }
         } catch (IOException e) {
             // TODO Auto-generated catch block
             System.out.println("file Input/Output error.");
             e.printStackTrace();
         }
         System.out.println("Обработано-"+stringCount+" строк.");
          
         // Выводим на печать количество найденых букв
         int i=0;
         for (char utfChar='Ё';utfChar<='ї';utfChar++){
             i++;
             System.out.println(utfChar+" - "+countSimbol[i]);
              
         }
     }
      
     // считаем количество искомых символов в строке
     static int countCharInString (String Str, char Chr){
         int Count=0;
         for (int Index = Str.indexOf(Chr, 0); Index>=0; ){
             Index = Str.indexOf(Chr, Index+1);
             Count++;
         }
         return Count;
     }
}

 
MINIshaДата: Суббота, 2011-09-24, 23:43:27 | Сообщение # 5
Генерал-майор
Группа: Администраторы
Сообщений: 21
Репутация: 1293
Статус: Offline
Добавлено (2011-09-24, 23:43:27)
---------------------------------------------
Code
import java.io.*;

import java.util.Date;

public class ReadWriteFile {
     
   public static void main (String[] args) throws IOException{
    String line = null;
    StringBuffer sb = new StringBuffer();
    int i = 0;
    int count = 0;
    int count1 = 0;
    char z;   
      
    File aFile = new File("java.txt");
       
     if (aFile.exists() == false){
        
      aFile.createNewFile();
         
       
      }
         
                        
do{  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     System.out.println("Введите ваш текст:  ");
     String text =  br.readLine();
     System.out.println("Спасибо, ваш текст:  ");
     System.out.println(text);
     System.out.println("Хотите записать его в файл?   Y/N");
        
     BufferedReader otvet = new BufferedReader(new InputStreamReader(System.in));
     z = otvet.readLine().charAt(0);
       
       if ((z=='Y')||(z=='y')){
        try {   
          
           FileWriter write = new FileWriter(aFile,true);//создаем объект типа FileWriter   
        BufferedWriter bw = new BufferedWriter(write);//создаём BufferedWriter
        Date dt =new Date();        //создаём дату   
        String s = dt.toString();       //переводим её в строку   
         
          
           
           
        bw.write(text+"\n");//записываем текст в буфер
        bw.write(s+"\n");//добавляем текущую дату записи
        bw.flush();//освобождаем буфер
          
          
        FileReader read = new FileReader(aFile);//создаём объект типа FileReader
        BufferedReader br1 = new BufferedReader(read);//создаём BufferedReader
        while ((line = br1.readLine())!=null ){ //построчно считываем в StringBuffer sb,
                    //объявленный в начале,
         sb.append(line);     //текст из файла
         sb.append("\n");
           
        }
          
           
          
          
          
           
         char[] k = sb.toString().toCharArray();//переганяю StringBuffer sb в массив char[] k
          for (i = 0; i<k.length; i++){ //запускаю цикл со счётчиком i для перебора символов массива
           if (k[i]==' '){// ставлю условие на подсчет пробелов (кол-во слов)
            count++;   //если условие верно - увеличиваю счётчик слов
           }
            if (k[i]=='\n'){//условие на подсчёт переводов строки (что равно кол-ву строк)
             count1++;   //если условие верно - увеличиваю счётчик строк
            }
              
          }
             
          System.out.println("Количество слов в файле: "+ (count+count1) );
          System.out.println("Количество строк в файле:  "+ count1);
            
                
            
           }          
           
       catch(IOException e){
        System.out.println("Ошибка! Даже не знаю по какой причине!!!"+ e.getMessage());}
        }
         
     }

while((z!='Y')&&(z!='y'));     
         
           
          
         
     }
        }
     


Почему? ДА ЧЕРЕЗ ПОТОМУ КАК ЧТОЖ!

Сообщение отредактировал MINIsha - Суббота, 2011-09-24, 23:44:48
 
m_voevudskiyДата: Воскресенье, 2011-09-25, 18:54:21 | Сообщение # 6
Рядовой
Группа: Проверенные
Сообщений: 3
Репутация: 0
Статус: Offline
а подскажите как можно дописать в файл текст не удаляя прежнего?
я подозреваю, что дело в первой строке, а как ее изменить ума не хватает.

PrintWriter zzz = null;
try
{
zzz = new PrintWriter(new FileOutputStream("my_test_file.txt"));
}
catch(FileNotFoundException e)
{
System.out.println("Ошибка открытия файла my_test_file.txt");
System.exit(0);
}
zzz.println("Это первая строка");
zzz.println("Это вторая строка");

zzz.close();

}
}


Сообщение отредактировал m_voevudskiy - Воскресенье, 2011-09-25, 18:54:56
 
MINIshaДата: Понедельник, 2011-09-26, 16:51:18 | Сообщение # 7
Генерал-майор
Группа: Администраторы
Сообщений: 21
Репутация: 1293
Статус: Offline
Quote (m_voevudskiy)
а подскажите как можно дописать в файл текст не удаляя прежнего?
я подозреваю, что дело в первой строке, а как ее изменить ума не хватает.


Code
FileWriter write = new FileWriter(aFile,true);//создаем объект типа FileWriter    
         BufferedWriter bw = new BufferedWriter(write);//создаём BufferedWriter  
         Date dt =new Date();        //создаём дату    
         String s = dt.toString();       //переводим её в строку    
           
            
             
             
         bw.write(text+"\n");//записываем текст в буфер  
         bw.write(s+"\n");//добавляем текущую дату записи  
         bw.flush();//освобождаем буфер  
           

Мишанька!!! Смотри код выше!!!


Почему? ДА ЧЕРЕЗ ПОТОМУ КАК ЧТОЖ!

Сообщение отредактировал MINIsha - Понедельник, 2011-09-26, 16:53:18
 
  • Страница 1 из 1
  • 1
Поиск: