else if (expression.contains("sin", Qt::CaseInsensitive)) { //正弦函数 QStringList list1 = expression.split("sin("); double a = list1[0].toDouble(); QStringList list2= list1[1].split("x)"); double b = list2[0].toDouble(); double c = list2[0].toDouble(); qDebug()<<list2[1]; xValues.append(i); yValues.append(a*qSin(b*i)+c);该段代码中expression是“2sin(2x)+1”,为什么在运行时说使用lis2[1]超出了数组范围
时间: 2024-01-05 13:03:19 浏览: 71
在你的代码中,`list2` 只包含两个元素,即 `list2[0]` 和 `list2[1]`,而你在第六行中尝试输出 `list2[1]`。这就导致了数组越界错误。
通过查看你提供的代码,我们可以发现 `list2[1]` 不是你所需要的值。你需要找到包含 `x)` 的字符串,而不是 `)`。因此,你可以将第六行代码修改为:
```
qDebug() << list2[1].split(")").at(0);
```
这将提取 `x` 后面的内容并输出。或者,你也可以修改第四行代码,以便将 `x)` 拆分成两个元素,如下所示:
```
QStringList list2= list1[1].split("x)");
double b = list2[0].mid(1).toDouble();
double c = list2[1].mid(1).toDouble();
```
这将提取 `x` 前面和后面的内容,并且不需要使用 `list2[1]`。
相关问题
else if (expression.contains("sin", Qt::CaseInsensitive)) { //正弦函数 QStringList list1 = expression.split("sin("); double a = list1[0].toDouble(); QStringList list2= list1[1].split("x)"); double b = list2[0].toDouble(); double c = list2[1].toDouble(); xValues.append(i); yValues.append(aqSin(bi)+c);在这段代码中expression是2sin(2x)+1,那么list2[1]是多少
在这段代码中,当 `expression` 为 `2sin(2x)+1` 时,`list2[1]` 应该是空字符串(`""`),因为 `split()` 方法中使用了 `x)` 作为分隔符,而该字符串中并没有以 `x)` 结尾的子串。因此,`list2` 应该只包含一个元素,即 `list2[0]` 为 `2`。
阅读全文