2014-11-06 64 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

相关问题