2014-11-22 2 views
0

Я пытаюсь создать программу, которая выполняет ручное деление для целых чисел и выводит данные и остаток. Я знаю, что Java не может изменять примитивы, поэтому мне придется использовать тип возврата, но я не совсем уверен, как его включить. Вот то, что я до сих пор:В Java, как мне изменить переменные при каждом вызове метода?

public class Division 
{ 
    private int x; 
    private int y; 
    private int quo; 
    private int a; 

    public Division() { 
     x = 50; //these two are just temporary for testing 
     y = 5; 
     quo = 0; 
    } 

    public void divide() { 
     a = (x-y); 
     quo++; 
    } 

    public void checkComplete() { 
     if(a > y) { 
      this.divide(); 
     } 
     else { 
      System.out.println("Quotient: " + quo); 
     } 
    } 

    public static void main (String[] arg) { 
     Division math = new Division(); 
     math.divide(); 
     math.checkComplete(); 
    } 
} 

Я пытаюсь иметь переменные изменения на выход в методе водоразделе для будущих вызовов методы. Любая помощь приветствуется.

+2

Что это должно делать, и почему вы называете divide() в checkComplete? Каждый раз, когда вы вызываете 'divide()' 'quo', увеличивается на единицу. Зачем? –

+0

Вы пытаетесь написать рекурсивный метод? Как «a = (x - y)); quo ++ '; 'вычислять фактор? Я вижу, что это может быть в цикле for (или рекурсивном вызове), но я не совсем уверен, что я бы назвал это «ручное разделение», что вы собираетесь делать, когда пытаетесь разделить 1 миллиард на 2? – Jared

+0

Java CAN изменяет примитивы, что вы имели в виду? – MondKin

ответ

0

Для того, чтобы сделать разделение, вы должны не вызывать ваш метод divide несколько раз, пока a < y ...

Глядя на код, я вижу, у вас есть это:

public void checkComplete() { 
    if(a > y) { 
     this.divide(); 
    } 
    else { 
     System.out.println("Quotient: " + quo); 
    } 
} 

ты не должен есть где-то там while (a>=y) { ... }? Может быть, вместо этого if?

Смежные вопросы