2013-08-31 2 views
0

Удаление отдельных символов и всех целых чисел из строк, считанных из файла.remove int, char from string

Целью было очистить все символы и цифры, не содержащие предложения, из строки, которая считывается через сканер. Причина удаления этих символов и ints заключалась в том, чтобы генерировать точное количество слов, количество предложений и количество слогов из слов, которые считаются.

Исходный код размещен очень грубым, был исправлен и будет перезаписан -приведенный ниже от меня.

Спасибо за все ваше время и помогите с этим!

public class Word { 
    private int wordCount, sentenceCount, syllableCount; 
    private int nums [] = {1,2,3,4,5,6,7,8,9,0}; 
    private char vowels [] = {'a', 'e', 'i', 'o', 'u', 'y'};; 
    private char punctuation [] = {'!', '?','.', ';', ':','-','"','(', ')'};; 

    public Word() 
    { 
     wordCount = 0; 
     sentenceCount = 0; 
     syllableCount =0; 
    } 

    public Word(String next) 
    { 
     if(next.length() > 1) 
     { 
      // 
      // Remove punctuation that does not create sentences 
      // 
      for(int i = 5; i < punctuation.length; i++) 
       for(int j = 0; j < next.length(); j++) 
        if(next.charAt(j) == punctuation[i]) 
          next = next.replace(j, ""); 
      // 
      // Counting Sentences 
      // 
      for(int i=0; i < 5; i++) 
       if(punctuation[i] == next.charAt(next.length()-1)) 
        sentenceCount++; 
      // 
      // Remove numbers for accurate word counting 
      // 
      for(int i = 0; i < nums.length; i++) 
       for(int j = 0; j < next.length(); j++) 
        if(next.charAt(j) == nums[i]) 
         next = next.replace(j, ""); 
      // 
      // Counts all syllables 
      // 
      for(int i = 0; i < vowels.length; i++) 
       for(int j = 0; j < next.length()-1; j++) 
        if(vowels[i] == next.charAt(j)) 
         syllableCount++; 
      System.out.println(next); 
     } 
    } 
+2

не понимаю ваш вопрос, но 'next.charAt (к) == Nums [я]' здесь вы сравниваете в Int с полукокса ' '1' == 1' i think is not true – nachokk

+0

Использовать 'Integer.parseInt()' статический метод для преобразования вашего текста в int. –

+1

next = next.replace (next.substring (j, j), ""); –

ответ

0
public class Word { 
    private int wordCount, sentenceCount, syllableCount; 
    private char vowels [] = {'a','e','i','o','u','y','A','E','I','O','U','Y'}; 
    private char punctuation [] = {'!','?','.',';',':','-','"','(',')',','}; 

    public Word() 
    { 
     wordCount = 0; 
     sentenceCount = 0; 
     syllableCount = 0; 
    } 

    public Word(String next) 
    { 
     // Remove numbers 
     next = next.replaceAll("[0-9]", ""); 
     // Skip over blank tokens 
     if(next.contains(" ") || next.length() < 1) 
       return; 

     // String builder method used for removing all non-sentence ending 
     // grammar marks. 
     StringBuilder newNext = new StringBuilder(next); 
     String tempNext; 
     if(newNext.length() > 0) 
     { 
      for(int i = 5; i < punctuation.length; i++) 
       for(int j = 0; j < newNext.length(); j++) 
        if(punctuation[i] == newNext.charAt(j)) 
        { 
         newNext = newNext.deleteCharAt(j); 
        } 
      tempNext = newNext.toString(); 
      next = tempNext; 

      if(next.length() < 1) 
       return; 
      else 
       wordCount++; 
     } 

     // Count sentences 
     for(int i = 0; i < 5; i++) 
      if(next.charAt(next.length()-1) == punctuation[i]) 
       sentenceCount++; 

     // Counts all syllables 
     if(next.length() > 2) 
     { 
      for(int i = 0; i < vowels.length; i++) 
       for(int j = 0; j < next.length()-1; j++) 
        if(vowels[i] == next.charAt(j)) 
         syllableCount++; 
     } 
     //System.out.println(next); 
    } 
-1

Если word ваш метод .. то его недопустимое заявление ... Для любого метода вы создаете вы должны иметь тип возвращаемого .. т.е.

Если метод возвращает значение (допустим целое) то она должна быть

public int word(String S){} 

Если метод не возвращает значение, то оно должно быть

public void word(String S){} 

Если вы хотите построить конструктор .. имя конструктора и имя класса должны быть такой же ..

public World(String S){} 
0

вы не можете писать

next.return(j,"");// you are replacing the j value(int) with "" 

поскольку .Привернуть() является то, что заменяет только строки с другой строкой .. даже символ не может быть заменен .. так что вам нужно ввести бросание ..

поэтому я попробовал и редактировать код .. дайте мне знать вас есть какие-то проблемы ...

public class Word { 
private int wordCount, sentenceCount, syllableCount; 
private int nums [] = {1,2,3,4,5,6,7,8,9,0}; 
private char vowels [] = {'a', 'e', 'i', 'o', 'u', 'y'}; 
private char punctuation [] = {'!', '?','.', ';', ':','-','(', ')'}; 

public Word() 
{ 
    wordCount = 0; 
    sentenceCount = 0; 
    syllableCount =0; 
} 

public Word(String next) 
{ 
    System.out.println("The Given String is"+next); 
    if(next.length() > 1) 
    { 
     int n=0; 
     int a=0; 
      if(next.charAt(0)=='"'){n=1;} 
     if(next.charAt(next.length()-1)=='"'){a=1;} 

     for(int y=0+n; y<next.length()-a;y++){ 
      if(next.charAt(y)=='"'){ 
       next=next.substring(0,y)+next.substring(y+1,next.length()); 
            }} 
     for(int i=0;i<8;i++){ 
       char k=punctuation[i]; 
       String l= Character.toString(k); 
       int j=next.indexOf(k); 
       if (next.contains(l)) {next=next.replace(l,"");}} 

     for(int i=0;i<10;i++){ 
       int k=nums[i]; 
       String q= Integer.toString(k); 
       if (next.contains(q)){ 
        next=next.replace(q, "");}} 

System.out.println("The String After Editing is: "+next); 

}}}