2014-11-19 4 views
0

У меня есть три метода в программе can, создайте файл и введите в него строку и после этого преобразуйте каждый символ в файл в верхний регистр, как я могу рассчитать количество повторений каждого символа в строка в файле, например: A = 2 C = 1 S = 4Вычислить количество повторений каждого char


import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.io.Writer; 
import javax.swing.*; 
public class run { 


public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    create(); 
    write(); 
    read(); 
} 

//---------------------------------------------------------- 
public static char []a={'S','A','R','D','E','O','P'}; 
static void create() 
{ 
     File file=new File("E://ss.txt"); 
     try 
     { 
      if(file.createNewFile()) 
       System.out .print("file is new" +"  \n"); 
      else 
       System.out .print("file is exit"+"  \n"); 
     } 
     catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 
} 
static void write() 
{ 
    try 
    { 
     FileOutputStream fos = new FileOutputStream("ss.txt") ; 

      String s=JOptionPane.showInputDialog(null,"write to file"); 
     OutputStreamWriter osw=new OutputStreamWrite`enter code here`r(fos); 
     Writer r=new BufferedWriter(osw); 
     r.write(s); 
     r.close(); 
    } 
catch(IOException e) 
{ 
    e.printStackTrace(); 
} 
} 
static void read() 

{ 

    try 
    { 
     String c=""; 
     FileInputStream fos = new FileInputStream("ss.txt") ; 
     System.out.print(fos.available()); 
     int content; 
     while((content=fos.read())!=-1) 
     { 
     c=c+(Character.toString((char)content)); 



     } 
        System.out.println(c.toUpperCase()); 

        //must be calculate the repeated char 


    int counter = 0; 
    for(int i=0; i<c.length(); i++) { 
    if(c.charAt(i) == a[i]) { 
    counter++; 
    } 
    } 


    } 

    catch (Exception e) 
      { 
     e.printStackTrace(); 
    } 
} 

}

+1

Как этот код относится к вашему вопросу? –

+0

http://stackoverflow.com/search?q=[java]+char+occurences – Tom

ответ

-2

Там может быть очень простой подход к ней:

Создать целочисленный массив X [ 26] для всех алфавитов теперь всякий раз вы запрашиваете символ, принеси его ASCII-значение, вычесть 65 (ASCII значение А) и приращение этой позиции на 1.

х [char.ASCII - 65] ++

Не забудьте инициализировать все элементы массива до 0.

+0

'Не забудьте инициализировать все элементы массива до 0.' ... и почему? Вы рекомендовали массив 'int', поэтому нет необходимости делать это вручную. – Tom

+0

Я говорил в общем смысле, возможно, некоторые языки не имеют массивы по умолчанию, равные 0, поэтому в java вам не нужно это делать. –

+0

Что такое 'char.ASCII'? Я никогда не видел этого на Java. –

Смежные вопросы