Как я могу разобрать BigInteger, но с помощью 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 для токенизации TXT-файла с именем DATA11.txt и записи в файл с именем OUT11.txt (я знаю, что я еще не закрыл читателя и писателя). Сначала я переворачиваю все предложение и буквы независимо от того, является ли это число или нет, а затем проверяю, является ли это int, который я могу перевернуть (строки типа 123abc сохраняются в обратном порядке). Одна из строк в файле имеет целое число длиной 22 символа. Мне было интересно, как я могу разобрать токенизированную строку с помощью BigInteger.

Вот текстовый файл:

Llaw Eht No Reeb для Selttob 99 Dnuora TI Ssap NWOD 1 EKAT UOY REB F Selttob 99

0123456789

Saera Rellams 51 для Эдам Иллаутца Tnsi 15aerA

secalp lamiced 10 ot ip si 6356295141p3

elpmaxe rof 1212323423409234092340 ekil srebmun gnol ylaer daer от drah fo dnik steg ti tub эгогнал лот иттерп а си сибарА

1 ответ

Документация является хорошим источником знаний. Если вы хотите BigInteger Вы должны открыть страницу документации об этом и найти то, что вы ищете. в вашем случае это может быть описание конструктора.

Я должен рассмотреть несколько обновлений вашего кода:

  • понять, когда следует использовать конкатенацию строк (s += "a") и когда лучше использовать StringBuilder. Строка является неизменным объектом, поэтому каждый раз, когда вы делаете конкатенацию внутри цикла, создается новая строка. Чтобы перевернуть 10 букв слова, вы создаете 10 строк.
  • Вы можете предотвратить возврат числовых строк, например:
    • разбить предложение на строки public String[] split(String regex), документация, регулярное выражение в вашем случае это пробел;
    • перебирать строки;
    • проверить, является ли строка числовой public boolean matches(String regex) документация, в этом случае регулярное выражение должно совпадать только с числами "\\d+",
Другие вопросы по тегам