Печать сокращенной формы деления

#java #eclipse #division

Вопрос:

 
   public static void main(String[] args) {
      
      
      int[] y = division(230,6);
      System.out.println(y[0]   " "   y[1]   "/"   y[2])
      
   }

   private static int[] division(int nominator, int denominator) {
         int k = nominator / denominator;
         int r = nominator % denominator;
         int n = denominator;
         int[] arr = { k, r, n };
         return arr;
      }

}
 

деление 230/6 даст мне 38 2/6. Я хочу получить 38 1/3, я хочу, чтобы часть дроби была в уменьшенном виде. Я не уверен, как это сделать на java. Есть ли какой-нибудь простой способ получить дробную часть в уменьшенном виде без использования одного из встроенных методов java.

Комментарии:

1. вы можете разработать метод, который находит GCD (Наибольший общий делитель) r и n. После этого вы делите r на GCD также n ==> > beginnersbook.com/2018/09/…

2. without using one of the inbuilt methods of java … вы, конечно, не имели в виду то, что сказали там, верно? @jhdev хороший ответ

Ответ №1:

Вы можете разработать метод, который находит GCD r и n :

 private static int findGCD(int num1, int num2) {
    while (num1 != num2) {
        if(num1 > num2)
            num1 = num1 - num2;
        else
            num2 = num2 - num1;
    }
    return num2;
}
 

в методе разделения вы можете добавить этот код :

 int gcd = findGCD(r, n);
 

И заменить

 int[] arr = { k, r, n };
 

С :

 int[] arr = { k, r/gcd, n/gcd };
 

Комментарии:

1. Почему я возвращаю num2, а не num1?. Я получаю одно и то же значение независимо от того, возвращаю ли я num2 или num1.

2. условие While равно num1 != num2, поэтому оно остановится, когда num1 == num2. Почему такое состояние? это математическая логика

3. таким образом, не имеет значения, верну ли я num1 или num2, я все равно получу то же самое возвращенное значение?