从字符串中获取最后一个整数

时间:2013-11-22 04:51:42

标签: java string integer

说我有一个字符串3 + 4 = 723 - 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

7 个答案:

答案 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);
相关问题