使用Split验证输入的Java程序。简化,但保持功能

使用Split验证输入的Java程序。简化,但保持功能,java,arrays,string,input,split,Java,Arrays,String,Input,Split,任何帮助都将不胜感激 我不想列出运算符,(我知道它会这样工作)我想知道我是否可以像我在下面的代码中尝试的那样将它们放在一个捆绑包中(它不起作用,任何人都知道为什么?如何修复它?) } double num1=double.parseDouble(标记[0]); double num2=double.parseDouble(令牌[2]); 双重回答; 字符串函数=“[+\\-*/]+”//这 String[]token=input.split(函数)//还有这个 字符串运算符=令牌[1]//我是接

任何帮助都将不胜感激

我不想列出运算符,(我知道它会这样工作)我想知道我是否可以像我在下面的代码中尝试的那样将它们放在一个捆绑包中(它不起作用,任何人都知道为什么?如何修复它?) }

double num1=double.parseDouble(标记[0]);
double num2=double.parseDouble(令牌[2]);
双重回答;
字符串函数=“[+\\-*/]+”//这
String[]token=input.split(函数)//还有这个
字符串运算符=令牌[1]//我是接线员
if(运算符等于(函数)){

对于(int i=0;i您应该首先拆分。您不能在
声明
令牌之前访问
令牌[0]

String function = "[+\\-*/]+"; //this
String[] token = input.split(function );//and this
然后使用数组[索引]

double num1 = Double.parseDouble(token[0]);
double num2 = Double.parseDouble(token[2]);
编辑

您应该改为使用。
匹配
等于
,因为.equals查找的是整个字符串而不是正则表达式

完整代码

Scanner scan = new Scanner(System.in);
System.out.println("enter your operation");
String input = scan.next();
String function = "[+\\-*/]+"; //this

String[] token = input.split(function);//and this

double num1 = Double.parseDouble(token[0]);

double num2 = Double.parseDouble(token[1]);

double answer;
String operator = input.toCharArray()[token[0].length()]+"";
if (operator.matches(function) && (token[0]+token[1]+operator).length()==input.length()) {

    System.out.println("Operation is " + operator+ ", numbers are " + token[0] + " and " + token[1]);
} else {

    System.out.println("Your entry of " + input + " is invalid");
}
输出>>

for input "2+3"   >  Operation is +, numbers are 2 and 3
for input "24+45" > Operation is +, numbers are 24 and 45
for input "2++4"  > Your entry of 2++4 is invalid

代码可能是这样的

double answer;
String function = "[+\\-*/]+"; //this
String[] token = input.split(function);//and this
double num1 = Double.parseDouble(token[0]);
double num2 = Double.parseDouble(token[1]);
String operator = input.substring(token[0].length,token[0].length+1)//this is the operator

if (token.length > 1){
    System.out.println("Operation is " + token[1] + ", numbers are " + token[0] + " and " + token[2]);
    }
else {

    System.out.println("Your entry of "+ input + " is invalid");
}
} 

拆分输入后的访问令牌

double num1 = Double.parseDouble(token[0]);
double num2 = Double.parseDouble(token[2]);


无法工作,因为分隔符在拆分后不会出现在字符串数组中。

它不起作用是什么意思?您的输入和输出以及预期的输出是什么?getlost,我明白您的意思,但我不理解使用数组索引的概念,请您详细说明一下好吗?@Integral当然可以。但请先告诉我您的目标是什么如何处理您的代码?我正在尝试验证+-/或*的用户输入。我将在println中声明它们,说明长度为[0]、[1]的输入是否与拆分中的[2]集中表达式中的另一个数字。@Integral我想这是你想要的。检查我更新的数字哦,伙计,请跟我说,getlost,因为我迷路了。我正在输入java scanner的输入。我甚至试着输入你给我的内容,但它说num1和num2无效。我如何确保num1和num2在最后会被重新编码使用绑定操作重新替换。此外,绑定操作将意味着输入的数字将从0和2更改为0和1?如果我使用的是长度,运算符为1,在获取令牌“”时,第一个数字为0,第二个数字在长度位置为2,这是怎么回事在透视图中,这不起作用,java告诉我需要更改string[]token中token的名称。它被声明为更高级的私有静态void splitEntry(string input){string token[]=input.split(“”);int length=token.length;重命名string[]标记为新名称时,字符串拆分函数不会返回拆分器字符串,如果要获取匹配器,最好使用java.util.regex.matcher或模式。
double num1 = Double.parseDouble(token[0]);
double num2 = Double.parseDouble(token[2]);
String operator = token[1];//this is the operator