我是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的最后一个整数
答案 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);
}