Я полагаю, что вы можете взять индекс текста и проверять каждый раз, когда появляются символы -, +, *, /, x или y, и устанавливать подстроки вместе, но я не могу понять, как это можнобыть сделано
это можно сделать с помощью интерфейса KeyListener
, который предоставляет 3 метода, которые могут помочь вам keyPressed
, keyReleased
и keyTyped
, каждый из которых имеет свою функциональность (хотя их именапроверяет их, но время их выполнения очень разное.)
вот пример
public class MyListener implements KeyListener {
@Override
public void keyTyped(KeyEvent e) {
//empty implemntation , we are not using it
}
@Override
public void keyPressed(KeyEvent e) {
//here we are implementing what we want for the app
//using the KeyEvent method getKeyChar() to get the key that activated the event.
char c = e.getKeyChar();
//let's check it out !
System.out.println(c);
//now we got it we can do what we want
if (c == '+'
|| c == '-'
|| c == '*'
|| c == '/') {
// the rest is your's to handle as your app needs
}
}
@Override
public void keyReleased(KeyEvent e) {
//empty implemntation , we are not using it
}
}
, поэтому, чтобы получить ключ, который нажал пользователь, мы получаем его из KeyEvent
объект.
при переходе к составной части мы добавляем его вот так
JTextComponent jtc = //create it whether it's text field , area , etc...
MyListener ml = new MyListener();
jtc.addKeyListener(ml);
остальное зависит от того, как вы собираетесь использовать текст String
, и запомните этот ответ, как узнатьчто пользователи только что напечатали (char by char), но в качестве подхода это очень плохо !!представьте, что пользователи решают удалить цифру или изменить местоположение каретки, как бы вы справились с этим ??поэтому, как сказал наш друг @phflack, я бы порекомендовал использовать Regex
или String.split
как-то так: -
String toSplit = "5-5*5+5";
String regex = "(?=[-+*/()])";
String[] splited = toSplit.split(regex);
for (String s : splited) {
System.out.print(s + ",");
}
и выходные данные этого
5,-5,*5,+5,
, но это вряд лиa Regex
Я только что показал вам образец для получения дополнительной информации о Regex
прочитайте это и для KeyListener
вы можете прочитать об этом здесь , и я надеюсь, что это решило вашупроблема.