有没有一种方法可以使用子字符串拆分JTextField并将其返回为double。问题是我将收到用户的输入,即JTextField中的3 + x + 5 * 7 + y或5 * y-x / 4,这将是一个字符串。但是为了在我的计算中使用它,我相信必须将其拆分或解析为双精度变量。
我相信您可以获取文本的索引,并在每次出现-,+,*,/,x或y时进行检查,并将子字符串设置在一起,但是我不知道该怎么做。
将其命名为double i
并在以下上下文中使用的变量:
public void solve(double y, double h, int j, double i){
xArray = new double[j];
yArray = new double[j];
for(int dex = 0; dex < j; dex++){
F1 = h*f(x,y,i);
F2 = h*f(x+h/2,y+F1/2,i);
F3 = h*f(x+h/2,y+F2/2,i);
F4 = h*f(x+h,y+F3,i);
y = y + 1.0/6.0*(F1+2*F2+2*F3+F4);
xArray[dex] = x;
yArray[dex] = y;
x = x + h;
}
}
private double f(double x, double y, double i){
return i;
}
答案 0 :(得分:0)
我相信您可以获取文本的索引,并在每次出现-,+,*,/,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
,并记住此答案是如何知道用户刚刚键入的内容(一个字符一个字符),但是作为一种方法,这非常糟糕!想象用户决定删除数字或更改插入符号的位置,您将如何处理?
因此,正如我们的朋友@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,
但这并不是Regex
,我只是向您展示了一个示例,以获取有关Regex
read this的更多信息,而对于KeyListener
您可以阅读{{3 }},希望这可以解决您的问题。