簡體   English   中英

在下列條件下,編寫一個程序將數字舍入到下一個10的倍數?

[英]Write a program to round a number to the next multiple of 10 given the following conditions?

編寫一個程序,將一個數字舍入到10的下一個倍數,如果它的個位數是5或更多,否則將它的前一個倍數舍入為10.So,25和26舍入到30,其中23和24輪到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,則從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;
}

可變參數

您還可以將sumRounded實現為帶有for-each循環的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
}

如果你想修復你的方式,請執行以下操作,但Exbury的答案是一種較短的方法。

  1. 如果你要四舍五入,你應該添加10減去數字,而不是數字本身。 因此,例如,26舍入應該是26+(10-6)= 26+(4)= 30

只需使用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);

您只需將以下代碼放入chexkRound方法即可

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

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

//代碼開始

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

//代碼結束

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM