Преобразование строки из многозначных чисел в массив символов

#java #arrays #string #char

#java #массивы #строка #символ

Вопрос:

У меня есть строка, представляющая собой математическое выражение. Пример: «((14 53) 62)» и я хочу преобразовать строку в массив символов. Пример [‘(‘, ‘(‘, ’14’, ‘ ‘, ’53’, ‘ ‘, ’62’, ‘)’]

Когда я использую этот метод .toCharArray для строки преобразует ее в массив символов, но для чисел, которые больше 9 (многозначные), он разбивает это число на отдельные цифры. Пример: [‘(‘, ‘(‘, ‘1’, ‘4’, ‘5’, ‘3’, ‘ ‘ ‘6’, ‘2’, ‘)’]

Как мне преобразовать строку, содержащую несколько цифр, в массив символов?

 public class Testing {

    public static void main(String[] args) {
        String stringNumbers = "24 23 84 12 41 52 54";

        char[] charNumArray = stringNumbers.toCharArray();
        System.out.println(Arrays.toString(charNumArray));
    }
}
  

Комментарии:

1. Вы имеете в виду массив строк? Символ — это, ну, всего один символ.

2. '14' недопустимый символ. Если ваши числа всегда будут разделяться пробелом, вы могли бы сделать: String[] numArr = stringNumers.split("\s ");

3. ахах, вау, я зря тратил свое время. Спасибо

4. @ GBlodgett Но это регулярное выражение даст первому компоненту разделения значение «((14», что, вероятно, не то, чего хочет OP.

5. Концепция, которую вы ищете, — это токенизация .

Ответ №1:

Допустим, вам нужно иметь дело с двумя операторами ( ,-);

 //Case one ( )
String stringNumbers = "24 23 84 12 41 52 54";
  

1.введите это через пробел.
2.цикл for для массива суммирует его.
3.распечатайте его.

 //Case two ( ,-)
String stringNumbers = "-24 23 84 12-41-52-54";
  

1.Создайте вторую нулевую строку.
2.Замените все строковые номера на (» , «,»)
3. выполните цикл по исходной строке, чтобы найти операторы минус,
if (charAt(i)==’-‘) добавьте ко второй строке «,-«.
4.2.разделите stringNumbers на «,».
5.повторите шаги 2,3 из первого примера.

 String s = "-12-5 15-20";
        String t = "";
        s = s.replaceAll("\ ",",");
        for (int i = 0; i < s.length(); i  ) {
            if(s.charAt(i)=='-' amp;amp; i!=0){
                t =",-";
                continue;
            }
            t =s.charAt(i);
        }
        String[] st = t.split(",");
        int sum = 0;
        for (int i = 0; i < st.length ; i  ) {
            sum =Integer.valueOf(st[i]);
        }
        System.out.println(sum);