@P_Alexander
First head

Почему переменная записывается не правильно??

Нужна помощь, не могу понять откуда берется число 2 в моем коде, я все проверил все работает правильно, но эти два берутся из неоткуда!!! Помогите!
Заранее ответ должен быть равен 4, но код возвращает 8!!
Я понимаю что код написан не красиво, но суть в том что чтоб решить задачу Вот код:
package testone;
import java.math.*;
import java.util.Scanner;


public class TestOne 
{
    
    BigDecimal s;
    BigDecimal f;
    BigDecimal h;
    BigDecimal y;
    public BigDecimal ceil (int a, int b)
    {
        s = BigDecimal.valueOf(a);
        h = BigDecimal.valueOf(b);
        y = BigDecimal.valueOf(1);
        
        //return ((a+b-1)/b);
        f = ((s.add(h).subtract(y)).divide(h,BigDecimal.ROUND_HALF_DOWN));
        System.out.println(" ceil ---" + f);
        return f;
    }
    
    public BigDecimal getRezult(int m, int n, int a)
    {
        h = ceil(m , a);
        System.out.println("hhhhhh ---" + h);
        y = ceil(n , a);
        System.out.println("yyyyyyyyyyyy ---" + h);
        System.out.println("h.multiply(y) -----" +  h.multiply(y));
        return h.multiply(y);
        //return ceil(m , a) * ceil(n , a);
    }
    public static void main(String[] args) 
    {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int m = scan.nextInt();
	int a = scan.nextInt();
        TestOne z = new TestOne();
        System.out.println(z.getRezult(m, n, a));
    }
}

Вывод этого кода:
6
6
4
ceil ---2
hhhhhh ---2
ceil ---2
yyyyyyyyyyyy ---4
h.multiply(y) -----8
8
BUILD SUCCESSFUL (total time: 6 seconds)
Главный вопрос, откуда в y, у меня 4 взялось, если функция как видно из вывода вернула 2?????!!!
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
@artemsee
В строчке
y = ceil(n , a);
n = 6, a = 4;

Внутри метода ceil(int a, int b) вы присваиваете
h = BigDecimal.valueOf(b);
b -- это второй параметр т.е. a = 4; из предыдущего фрагмента кода

Затем вы выводите
System.out.println("yyyyyyyyyyyy ---" + h);
т.е. 4. Скорее всего в этой строчке вы хотели выводить переменную y, а не h
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы