java编程得到的最后一个整数不是零

java编程得到的最后一个整数不是零,java,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; } {

我是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); 
     }
int-sum=1;
int x=0;
扫描仪输入=新扫描仪(系统输入);
系统输出打印项次(“输入编号”);
int num=in.nextInt();

对于(int i=1;i打印不等于0的最后一个数字:

System.out.print("the last number is: " + (num+"").replaceAll(".*([1-9])0*", "$1"));
这个答案的重要部分是调用
replaceAll()
中的正则表达式。它匹配整个输入,同时捕获最后一个非零数字作为组1。替换项是对组1的反向引用,因此整个输入被最后一个非零数字替换,从而有效地提取它

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


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

请注意,和变量实际上包含所有va的乘积卢埃斯

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

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); 
}

你对“和”的计算不正确。你想做什么?你打印的是0,因为%(mod),所以,如果和等于一个偶数,当你得到剩余的除以10时,等于零。同样,通过做
last=sum%10
你假设“和”有两位数。解释可能对他有很大帮助。这不是一个简单的答案:)@Maroun Maroun我想可能有人会这么说。我的回答是,我的答案和他的问题一样清楚:)给出的真正问题是我必须计算所有给定数字的总和,例如,我有一个输入:5,这就是1x2x4x5,等于120,然后我将打印最后一个数字,但如果最后一个数字是0,我将打印2。这就是我的代码所做的。在你的程序中尝试一下,看看它是否适合你you@Bohemian这可能是他们“应得的”,但拜托,伙计。这是真的。如果提问者没有任何标准,至少回答者可以坚持这些标准。