#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);