从名称中获取最后一位数字

时间:2015-10-03 14:16:54

标签: java string java.util.scanner

我想知道我是否可以获得输入的最后一位数字,但如果最后一位数字为0,我希望它忽略它并取出它之前的那个...就像bob120,最后一位数字是20而不是0,使它成为人的水平

这是我的代码,我试了2天才知道我是怎么回事这个问题。 我尝试了%10但仍然是同样的问题。

number = number.substring(5,6);
level = Integer.parseInt(number);

我正在使用扫描包

提前谢谢

2 个答案:

答案 0 :(得分:1)

如果输入是一个字符串,并且您喜欢使用子字符串,那么代码将是

int pos= number.lenght();
String lastChar = number.substring(pos-1,pos);

注意:number是一个字符串:)...

然后你就在Integer.parseInt(),如果它不是一个数字(尝试,捕捉),请注意错误......

然后你需要一个if语句......改变你的位置再试一次......

要完成这项任务,最好使用String.toCharArray()向后循环...所以如果你有时间研究这个......

这样的事情:

public int getLastNumDifThenZero(String text){
    char[] ca = text.toCharArray();
    for (int i = ca.length-1; i >= 0; i--) {
        char a = ca[i];
        try {
            int n = Integer.parseInt(String.valueOf(a));
            if (n!=0){
                return n;
            }
        } catch (NumberFormatException e) {
            //Not a number
        }

    }
    return -1;
}

答案 1 :(得分:0)

你可以从String的结尾循环并搜索'非零'值(结果char是String):

    public static void main(String[] args) {
        // example returns 7
        String num = "85677000";
        char lastDigit =' ';

        // looping from end and searching non zero digit
        for(int i=num.length()-1 ; i>=0 ;i--){
            lastDigit=num.charAt(i);
            if (lastDigit != '0'){
                System.out.println(lastDigit);
                break;
            }
        }
    }