说我有一个字符串3 + 4 = 7
或23 - 4 = 19
。我想知道如何从字符串中获取最后一个整数,以便可以将其与另一个int进行比较。
我用过这段代码:
int first = Integer.parseInt(str.substring(0, str.indexOf(" ")));
int second = Integer.parseInt(result.substring(result.indexOf('+')+1 , result.indexOf('=')));
获取计算的第一个和第二个整数,但是当我使用上面的方法时,我似乎无法获得字符串中的最后一个整数。这只是我做错了还是我需要做的其他事情?
我也不能使用数组,正则表达式,try / catch或SystemTokenizer。
我的字符串并不总是带有空格或单个数字整数的a + b = c格式。 字符串取自扫描仪导入的文本文件。以下是文件中方程式的示例:
11 - 2 = 9
12 - 1 = 11
7 + 1 = 8
7 - 3 = 4
7 + 2 = 9
14 + 4 = 18
答案 0 :(得分:3)
如果您的所有字符串都采用此格式 - a + b = c
,那么有一种简单的方式 -
String[] parts = str.split("=");
String lastDigit = parts[parts.length - 1].trim();
int last = Integer.parseInt(lastDigit);
查看docs。
<强>更新强>
根据您不想使用正则表达式的要求,您可以执行以下操作 -
public int getLastDigit(String expression) {
StringBuffer result = new StringBuffer();
for (int i = expression.length() - 1; i >= 0; i--) {
char c = expression.charAt(i);
if (c == '=') {
break;
}
else {
result.append(c);
}
}
return Integer.parseInt(result.reverse()
.toString()
.trim());
}
int last = getLastDigit("1 + 3 = 14");
System.out.println(last); // will print 14
答案 1 :(得分:0)
这将更容易实现:
String[] tokens = str.Split(" ");
int first = Integer.parseInt(tokens[0]);
int second = Integer.parseInt(tokens[1]);
int last = Integer.parseInt(tokens[3]);
否则没有数组,请使用lastIndexOf
:
int last = Integer.parseInt(str.substring(str.lastIndexOf(" "), str.length()));
答案 2 :(得分:0)
简单使用split和get index [1]来获取string中的最后一个整数 只是用“=”
分开答案 3 :(得分:0)
这有用吗?
int last = Integer.parseInt(str.substring(str.indexOf("=") + 1, str.length));
想法是获取“=”的索引,然后将那里的子字符串解析到最后。 我做了“str.indexOf(”=“)+ 1”,因此它没有包含“符号”。
答案 4 :(得分:0)
String [] tokens = str.split("=");
String finalDigit = tokens[tokens.length-1];
答案 5 :(得分:0)
import java.io.*;
class GetString{
publice static void main(String []args)
{
string str,int x;
Scanner s = new Scanner(input).useDelimiter("\n"); //take each line
while((str=s.next())!=NULL)
{
str.trim();
int first = Integer.parseInt(str.substring(0, str.indexOf(" ")));
//Depending on weather the sign is '+' or '-' it will take the index of that
int second = Integer.parseInt(str.substring((x=str.indexOf('+')>-1?
str.indexOf('+'):str.indexOf('-'))+1 , result.indexOf('=')));
int Third= Integer.parseInt(str.substring(str.indexOf("="), str.Length-1))
}
s.close();
}
}
一般的想法不是一个完美的代码。欢迎提出建议和建议。
答案 6 :(得分:0)
您需要修剪提取的数字,否则可以抛出
线程“main”中的异常java.lang.NumberFormatException:用于输入 string:“7”
要提取最后一位数字,您可以按照以下代码
String str1="3 + 4 = 7";
String str2= str1.substring(str1.lastIndexOf("=")+1).trim();
int i = Integer.parseInt(str2);