如何使用StringTokenizer解析一个BigInteger

时间:2018-11-08 01:09:32

标签: java string biginteger parseint stringtokenizer

public static void main(String[] args) throws FileNotFoundException {
    // SPLASH 
    // OBJECTS 
    File file1 = new File ("DATA11.txt");
    File file2 = new File ("OUT11.txt");
    Scanner scanner = new Scanner(file1); 
    PrintWriter writer = new PrintWriter(file2); 
    StringTokenizer st = null;

    // CONSTANTS 
    // VARIABLES 
    String sentence; 
    String reverse = ""; 
    int length; 
    boolean isNumber = false; 

    // INPUT 
    while (scanner.hasNextLine())
    {
        sentence = scanner.nextLine(); 
        length = sentence.length(); 
        for (int i = length - 1; i >= 0; i--)
        {
            reverse += sentence.charAt(i); 
        }
        st = new StringTokenizer(reverse, " "); 
        try
        {
            Integer.parseInt(st.nextToken()); 
        }
        catch (NumberFormatException e)
        {

        }

    }

我正在做一个字符串活动分配,我必须翻转句子和单词,但是数字不能颠倒。我正在使用StringTokenizer标记一个名为DATA11.txt的txt文件,并写入一个名为OUT11.txt的文件(我知道我还没有关闭读写器)。我首先翻转整个句子和字母,而不管它是否是数字,然后再检查它是否是可以翻转的整数(像123abc这样的字符串保持反向)。文件中的其中一行具有22个字符长的整数。我想知道如何使用BigInteger解析标记化的字符串。

这是txt文件:

没有任何选择的权利98 d 1 ekat uoy reeb selttob 99法律规定的没有任何权利

0123456789

saera rellams 51 foedam yllautca tnsi 15aerA

secalp导致10 ot ip si 6356295141p3

elpmaxe rof 1212323423409234092340 ekil srebmun gnol ylaer daer ot drah fo dnik steg ti tub egaugnal looc ytterp a ci cibarA

1 个答案:

答案 0 :(得分:0)

文档是很好的知识来源。如果您想要BigInteger,则应打开有关它的文档页面,然后找到所需的内容。在您的情况下,它可以是构造函数description

我应该考虑对您的代码进行少量更新:

  • 了解何时应该使用字符串连接(s += "a"),以及何时最好使用StringBuilder。字符串是一个不可变的对象,因此每次在循环中进行串联时,都会创建新的字符串。要反转10个字母的单词,您要创建10个字符串。
  • 您可以通过以下方法防止数字字符串还原:
    • 将句子拆分成字符串public String[] split(String regex)documentation,您的正则表达式是一个空格;
    • 迭代字符串;
    • 通过public boolean matches(String regex)documentation验证字符串是否为数字之一,在这种情况下,正则表达式应仅匹配数字"\\d+"