【发布时间】:2013-11-26 22:37:20
【问题描述】:
我的意思是,如果我有一个字符串,例如 23 + 4 + 13 = 40 或 123 - 100 + 245 = 268,我将如何从字符串中取出第三 (c) 部分?在示例的情况下,我想使用 13 或 245。
我该怎么做呢?
这是我目前获得第一个数字、运算符、第二个数字和问题答案的代码,但我不确定如何获得第三个数字。
int first = Integer.parseInt(fileContent.substring(0, fileContent.indexOf(" ")));
char operator = getOperator(fileContent);
int second = secondNumber(result, fileContent);
int last = Integer.parseInt(result.substring(result.indexOf("=") + 1));
我不能为此使用数组、正则表达式、try/catch 或 systemTokenizers。
更新:这是一个我必须做的实验室,但我不能使用任何这些东西,因为它是一个“入门”课程,我们还不应该知道它们。很不方便。
这是我的 getOperator 方法
public static char getOperator(String fileContent){
int checkAdd = fileContent.indexOf('+');
int checkMinus = fileContent.indexOf('-');
int checkMulti = fileContent.indexOf('*');
int checkDivi = fileContent.indexOf('/');
if (checkAdd != -1){
char operator = fileContent.charAt(fileContent.indexOf('+'));
return operator;
}
else if (checkMinus != -1) {
char operator = fileContent.charAt(fileContent.indexOf('-'));
return operator;
}
else if (checkMulti != -1) {
char operator = fileContent.charAt(fileContent.indexOf('*'));
return operator;
}
else if (checkDivi != -1){
char operator = fileContent.charAt(fileContent.indexOf('/'));
return operator;
}
return ' ';
这是我的 secondNumber 方法:
public static double secondNumber(String result, String opContent){
int checkAdd = opContent.indexOf('+');
int checkMinus = opContent.indexOf('-');
int checkMulti = opContent.indexOf('*');
int checkDivi = opContent.indexOf('/');
if (checkAdd != -1){
return Double.parseDouble(result.substring(result.indexOf('+')+1 , result.indexOf('=')));
}
else if (checkMinus != -1) {
return Double.parseDouble(result.substring(result.indexOf('-')+1 , result.indexOf('=')));
}
else if (checkMulti != -1) {
return Double.parseDouble(result.substring(result.indexOf('*')+1 , result.indexOf('=')));
}
else if (checkDivi != -1){
return Double.parseDouble(result.substring(result.indexOf('/')+1 , result.indexOf('=')));
}
return 0;
}
结果来自这个方法:
public static String removeSpaces(String content){
String result = content.replace(" ","");
return result;
}
【问题讨论】:
-
你能用
Scanner吗? -
您是否有一个包含所有可能运算符的有限列表(例如 +、-、/、* 等)?如果是,您可以使用正则表达式通过有限的运算符列表将字符串分隔为数组(列表)
-
为什么不能使用正则表达式或分词器?这是作业吗?
-
既然你有第一个、第二个数字和第一个运算符,请将第一个出现的两者都替换为 "",然后你一次又一次地使用 getOperator Integer.parseInt(fileContent.substring(0, fileContent.indexOf(" ")));
-
问题实际上出在正在扫描的文件中,因此它们并不是真正静态的。