Как работать с классом StringTokenizer - PullRequest
0 голосов
/ 06 декабря 2018

Я должен оценивать строку, разбивая ее на токены, используя класс StringTokenizer.После этого я должен конвертировать эти токены в значения int, используя «Integer.parseInt».

Что я не получаю, так это то, как я должен работать с токенами после их разделения.

public class Tester {

    public static void main(String[] args) {
    String i = ("2+5");
    StringTokenizer st = new StringTokenizer(i, "+-", true);
    while (st.hasMoreTokens()) {
        System.out.println(st.nextToken());
    }
    int x = Integer.parseInt();
//what exactly do I have to type in here, do convert the token(s) to an int value?
}

}

Так что, если я правильно понял, у меня теперь есть три токена.Это будет: «2», «+» и «5».

Как именно я могу преобразовать эти токены в значения int?Должен ли я конвертировать каждый из них отдельно?

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Чтобы иметь возможность сделать некоторые вычисления с целыми числами, извлеченными из String, вы должны поместить их в ArrayList.И вы должны использовать операцию try / catch, чтобы избежать исключения NumberFormatException.Кроме того, вы можете взять значения непосредственно из ArrayList и делать с ними то, что вам нужно.Например:

public static void main(String[] args) {
    ArrayList <Integer> myArray = new ArrayList <>();    
    String i = ("2+5");
        StringTokenizer st = new StringTokenizer(i, "+-/*=", true);
        while (st.hasMoreTokens()) {
            try {
            Integer stg = Integer.parseInt(st.nextToken(i));
            myArray.add(stg);
                }
            catch (NumberFormatException nfe) {};
            }

       System.out.println("This is an array of Integers: " + myArray);
       for (int a : myArray) {
           int x = a;
           System.out.println("This is an Integer: " + x);
       }
       int b = myArray.get(0);
       int c = myArray.get(1);
       System.out.println("This is b: " + b);
       System.out.println("This is c: " + c);
       System.out.println("This is a sum of b + c: " + (b + c));

}

В результате вы получите:

This is an array of Integers: [2, 5]
This is an Integer: 2
This is an Integer: 5
This is b: 2
This is c: 5
This is a sum of b + c: 7
0 голосов
/ 06 декабря 2018

Может быть, вы можете использовать это:

    String i = ("2+5");
    StringTokenizer st = new StringTokenizer(i, "+-", true);
    while (st.hasMoreTokens()) {
        String tok=st.nextToken();
        System.out.println(tok);

        //what exactly do I have to type in here, do convert the token(s) to an int value?
        if ("+-".contains(tok)) {
            //tok is an operand
        }
        else {
            int x = Integer.parseInt(tok);
        }       
    }
...