java编程获取最后一个整数而不是零

时间:2013-09-12 14:31:01

标签: java

我是java程序的新手,我有一个像这样的简单问题:

我试试这个

int sum=1;

    int x=0;
     Scanner in = new Scanner(System.in);
     System.out.println("input number");
     int num=in.nextInt();

     for(int i=1 ;i<=num;i++)
     {
         sum=sum*i;
    }
     {
         System.out.println("the sum is of all number from 1 to"+" "+num+" "+"is:"+sum);
     }

     int last=sum % 10;

     {
       System.out.print("the last number is: "+last); 
     }

但我想打印不等于0的最后一个整数

2 个答案:

答案 0 :(得分:2)

打印最后一位不等于0的数字:

System.out.print("the last number is: " + (num+"").replaceAll(".*([1-9])0*", "$1"));

这个答案的重要部分是对replaceAll()的调用中的正则表达式。它匹配整个输入,同时捕获最后一个非零数字作为组1.替换术语是对组1的反向引用,因此整个输入被最后一个非零数字替换,有效地提取它。

如果数字为零,这仍然有效 - 结果将保持不变,因为没有匹配。

这可以通过首先删除所有尾随零,然后使用子字符串来获取最后一位数来实现,但是它会采用移动的代码行,你必须为零数字边缘情况添加额外的代码,尽管它可能更容易理解。

答案 1 :(得分:2)

请注意,sum变量实际上包含所有值的乘积。

要检索最后一个非零值,您可以执行以下操作:

if (sum == 0)
{
    System.out.print("no last number found"); 
}
else
{
    int last=sum%10;
    while (last == 0)
    {
        sum /= 10;
        last =sum%10;
    }

    System.out.print("the last number is: "+last); 
}