在下列条件下,编写一个程序将数字舍入到下一个10的倍数?

时间:2015-11-05 06:35:02

标签: java if-statement

  

编写一个程序,将数字舍入为10的下一个倍数,如果其数字为5或更多,否则将其前一个倍数除以10.So,25和26舍入为30,其中23和24舍入为20 .20也是20轮。你已经获得了4个整数作为输入。舍入每个输入值并返回它们的总和。

MyApproach

我在第一个函数中创建了2个函数,我计算了所有4个数字的总和。

在第二个函数中,我检查了UnitDigtit,如果> = 5&&< = 9然后继续问题中给出的一组语句。

否则

我检查了它是一个数字还是两个数字或任何数字。如果一个数字我返回num = 0否则我继续使用这些语句集。

示例输入#1

sumRounded(11,15,23,30)

样本输出#1

80(11轮到10,15到20,23到20和30到30)

示例输入#2

sumRounded(1,3,7,9)

样本输出#2

20

public int sumRounded(int num1, int num2, int num3, int num4)
{

    int a=checkRound(num1);
    int b=checkRound(num2);
    int c=checkRound(num3);
    int d=checkRound(num4);
    return a+b+c+d;
}   

public int checkRound(int num)
 {
      int a=num%10;
      if((a>=5) &&(a<=9))
      {
         if(a==5)
          {
              num=num+5;
          }
         else if(a==6)
          {
               num=num+6;
          }
          else if(a==7)
          {
                num=num+7;
          }
          else if(a==8)
          {
                num=num+8;
          }
          else if(a==9)
          {
               num=num+9;
          }
          return num;
       }
         else
         {
             if((num/10)!=0)
             {
                 if(a==1)
                    {
                        num=num-1;
                    }
                 else if(a==2)
                    {
                        num=num-2;
                    }
                 else if(a==3)
                    {
                        num=num-3;
                    }
                 else if(a==4)
                    {
                        num=num-4;
                    }
                 return num;
             }
             else
             {

              return num=0;
             }
          }



     }

结果:

  Parameters           Actual Output    Expected Output 

'289' '3' '25' '308'   644              630

5 个答案:

答案 0 :(得分:4)

舍入

如果余数小于5,则从num中减去它。否则,将余数减去余数num。像,

static int checkRound(int num) {
    int rem = num % 10;
    return rem < 5 ? num - rem : num + (10 - rem);
}

使用Math.round(float)之类的

static int checkRound(int num) {
    return Math.round((float) num / 10) * 10;
}

Varargs

您还可以使用for-each loop

sumRounded实现为varargs方法
static int sumRounded(int... nums) {
    int sum = 0;
    for (int num : nums) {
        sum += checkRound(num);
    }
    return sum;
}

测试

然后你可以测试它,

public static void main(String[] args) {
    System.out.println(sumRounded(11, 15, 23, 30)); // == 80
    System.out.println(sumRounded(1, 3, 7, 9)); // == 20
}

答案 1 :(得分:1)

如果你想修复你的方式,请执行以下操作,但Exbury的答案是一种较短的方法。

  1. 如果要进行四舍五入,则应添加10减去数字,而不是数字本身。因此,例如,26舍入应该是26+(10-6)= 26+(4)= 30

答案 2 :(得分:1)

只需使用checkRounded方法

中的提醒检查
int number = 23;
int output=0;
if(number%10<5){
    output=(number/10)*10;
}
else{
    output=((number/10)+1)*10;
}

System.out.println(output);

答案 3 :(得分:1)

您只需将以下代码放入chexkRound方法

即可
 int a = num % 10;
 if ((a >= 5) && (a <= 9)) {
     num = 10 * (num / 10 + 1);
 } else {
     num = 10 * (num / 10);
 }
 return num;

答案 4 :(得分:0)

以下代码完全符合您的需求

//代码开始

    public static void main(String[] args) {
    System.out.println("The answer is: " + getSum(2,5,19));
}

public static int getSum(int... nums) {
    int sum = 0;
    for (int n : nums) {
        int lastDigit = n % 10;
        if (lastDigit >= 5) {
            sum = sum + n + (10 - (lastDigit));
        } else {
            sum = sum + 10 * (n / 10);
        }
    }
    return sum;
}

//代码结束