我知道如何使用substring()
,但为什么这不起作用,用户输入一个类似的方程式
" 5t + 1"在" +"之前和之后有一个空格。我希望tVariable
在它之前保持整数,在case 5
中,常量应该在此case 1
中保持常量整数,但是我得到一个超出范围的错误。
import java.util.*;
import javax.swing.JOptionPane;
public class project3030 {
public static void main(String[] args) {
String L1x, tVariable, constant;
L1x = JOptionPane.showInputDialog("This is the format (x=5t + 1)");
int endIndex = L1x.indexOf("t");
tVariable = L1x.substring(0, endIndex);
int beginIndex = L1x.lastIndexOf(" ");
int endIndex2 = L1x.indexOf("");
constant = L1x.substring(beginIndex, endIndex2);
System.out.println(tVariable + constant);
}
}
答案 0 :(得分:1)
您需要将其更改为更像
的内容constant = L1x.substring(L1x.lastIndexOf(" ")).trim();
然后当你添加数字时,你必须先解析它们。
int constantInt = Integer.parseInt(constant);
或者您可以使用此解决方案:
String[] input = L1x.split(" ");
// remove the 't'
String tNum = input[0].substring(0, input[0].length() - 1);
int t = Integer.parseInt(tNum);
int constant = Integer.parseInt(input[2]);
String operator = input[1];
if (operator == "-")
constant *= -1;
答案 1 :(得分:0)
您收到此错误的原因是因为substring()
范围已关闭。
您传入的substring()
无效范围是因为第一个索引为beginIndex
,您将其设置为lastIndexOf(" ")
而endIndex2
设置为indexOf("")
这将发生在字符串的开头。
因此,你的范围混淆了。当你发表这个声明时:
constant = L1x.substring(beginIndex, endIndex2);
你给它一个不规范的范围 并将导致指定的错误。
答案 2 :(得分:0)
你也可以采用不同的方式。我们假设您创建了一个JFrame,并且您可以为每个值设置一个文本字段,因此对于每个" t"或常量,然后获得这些值会更简单。对于像t或=这样的字符,您可以使用JLabel,因此它将是JTextFields和JLabel的混合体,我认为它不会那么难看。我几次使用这个解决方案。