2014-11-06 92 views
-4

問題是Conversion = "_"。源代碼在這裏。我試圖讀取一個TXT和它的好!然後代碼「標記化」這些單詞並且它也可以。但是,當我嘗試保存在另一個文本文件中時,出現此錯誤。線程「main」中的異常java.util.UnknownFormatConversionException:Conversion ='_'

但是,如果我刪除「__」它保存成功,但我不想刪除「_」!

這是一個用於標記一些單詞的程序。

我只想知道我該怎麼做。或者我可以做什麼來運行我的項目沒有這種例外。

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '_' 
    at cugru.test.main(test.java:81) 

在81行!!

下面是代碼:

package cugru; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Locale; 

import org.cogroo.analyzer.Analyzer; 
import org.cogroo.analyzer.ComponentFactory; 
import org.cogroo.text.Document; 
import org.cogroo.text.impl.DocumentImpl; 

public class test { 

    public static void main(String[] args) throws IOException { 

     FileReader reader = new FileReader(new File("D:/Felipe/Downloads/eclipse/workspace/java worskpace luna/Excel java/sumarios/gold sem tokens.txt"));  
     BufferedReader leitor = new BufferedReader(reader); 
     String linha = null; 
     int contadorTokens = 0; 
     FileWriter arq = new FileWriter("d:\\tabuada.txt"); 
     PrintWriter gravarArq = new PrintWriter(arq); 

     //Cria procedimentos padrao do CoGrOO 
     ComponentFactory factory = ComponentFactory.create(new Locale("pt", "BR")); 
     Analyzer cogroo = factory.createPipe(); 


     int qtde = 0; 

     while((linha = leitor.readLine()) != null) { 

      qtde++; 
      if(qtde >10) 
       break; 

      //linha = linha.toLowerCase(); //deixa em minusculo 

      //System.out.println(linha); 
      linha = expandirAcronimos(linha); 
      //System.out.println(linha); 
      //System.out.println("======================================"); 


      /** for (int i = 0; i < sentenca.length; i++) { 

        sentenca = linha.split(" ");// separa a "linha" emdentro das aspas) e joga para o array sentenca 
//    System.out.println(sentenca[i]);ido acetil saliclico "); 
//    System.out.println(sentenca[i]); 
        sentenca[i] = sentenca[i].replace(" AAS "," ido acetil saliico "); 
       }**/ 
      Document document = new DocumentImpl(); 
      document.setText(linha); 

      cogroo.analyze(document); 

      for (org.cogroo.text.Sentence sentence : document.getSentences()) { // lista de sentencas 



       sentence.getStart(); sentence.getEnd(); // caracteres onde a sentenca comeca e termina 
       String texto_sentenca = sentence.getText(); // texto da sentenca 
       //Imprime sentenca 
       //System.out.println(texto_sentenca); 



       // Tokens 
       for (org.cogroo.text.Token token : sentence.getTokens()) { // lista de tokens 
        token.getStart(); token.getEnd(); // caracteres onde o token comeca e termina 
        token.getLexeme(); // o texto do token (palavra que ele separa e pega exp: "clinico" 
        token.getLemmas(); // um array com os possiveis lemas para o par lexeme+postag 
        token.getPOSTag(); // classe morfologica de acordo com o contexto("coloca "prp, adj,n(noun)) 
        token.getFeatures(); // genero, numero, tempo etc 
        contadorTokens++; 
        System.out.println(token.getLexeme() + "_" + token.getPOSTag() + "_" + token.getFeatures());// imprime a palavra com o tag 
         gravarArq.printf(token.getLexeme() + "__" + token.getPOSTag() + "__" + token.getFeatures()); 
        //System.out.println(token.getLexeme()); 
       } 




       //System.out.println("Total de tokens sao: "+contadorTokens); 
      } 

     } 



     reader.close(); 
     arq.close(); 


    } 




} 
+1

這篇文章有太多的錯誤。 – user3270760 2014-11-06 21:39:20

+4

*「爲什麼我需要寫很多和stackoverflow不讓我發佈問題?」*因爲這是我們的房子,並在我們的房子,我們期望您閱讀並遵循[我們的規則](http://stackoverflow.com /幫助/如何對問)。 – 2014-11-06 21:40:14

+0

我知道...但我不得不刪除一些東西,以stackoverflow讓我張貼..你能幫我嗎?我在第81行得到這個錯誤是:gravarArq.printf(token.getLexeme()+「__」+ token.getPOSTag()+「__」+ token.getFeatures()); – mightduck 2014-11-06 21:41:07

回答

1

方法printf()是不一樣的println()。它用於格式化輸出。第一個參數是格式化字符的字符串。例如:

System.out.printf("%2d %2d%n", x, y); 

但是,您使用了想要打印的東西作爲第一個參數。該方法認爲這是一個格式字符串,並查找以%開頭的部分。您的字符串中可能有%,但在此之後有_。這不是合法格式,所以你會得到這個例外。

您可能想要使用println()方法。使用它將消除異常。

+0

哈哈,我是個笨蛋!哈哈哈哈,非常感謝你,你是男人!我愛你...它的基礎是什麼?它現在有效!非常感謝!!! – mightduck 2014-11-06 21:53:12

0

你的printf使用!

gravarArq.printf(token.getLexeme() + "__" + token.getPOSTag() + "__" + token.getFeatures()); 

必須定義的格式爲您的printf方法 瞭解更多信息:

link here

+0

而不是提供鏈接,您應該總結解決OP問題的相關信息。就目前而言,這篇文章應該是評論,而不是答案。 – 2014-11-06 21:43:43

+0

好吧我現在編輯 – aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2014-11-06 21:44:09

+0

嗯,我讀了...所以比我需要使用%c,因爲我有我的printf右邊的「_」字符?但我需要把那個%c放在哪裏? – mightduck 2014-11-06 21:49:26

相關問題