2015-06-01 4 views
4

Я создаю класс, который имитирует целое число Гаусса. Я использую конструктор в моем методе добавления, чтобы добавить две две части gInt, а затем вернуть новый gInt, который является суммой. Но по какой-то причине, когда я пытаюсь реализовать этот метод, Java говорит, что gInt требуется, когда я инициализирую новый gInt и обнаружил пустоту. Почему это должно быть? Я включил класс ниже и указал, какая строка вызывает эту ошибку.gaussian class in java

public class gInt { 

    private int real; 
    private int imag; 



    public void gInt(int r) 
    { 
     imag=0; 
     real=r; 

    } 

    public void gInt(int r, int i) 
    { 
     real=r; 
     imag=i; 

    } 

    gInt add(gInt rhs) 
    { 
     gInt added; 
     int nReal=this.real+rhs.real; 
     int nImag=this.imag+rhs.real; 

     added= gInt(nReal,nImag); //--> Says it requires a gInt and found a void 

     return added; 
    } 
} 

ответ

1

Используйте эту реализацию, и все будут счастливы:

public class GInt { 

    private int real; 
    private int imag; 

    public GInt(int r) { 
     imag=0; 
     real=r; 
    } 

    public GInt(int r, int i) { 
     real = r; 
     imag = i; 
    } 

    GInt add(GInt rhs) { 
     GInt added; 
     int nReal = this.real + rhs.real; 
     int nImag = this.imag + rhs.real; 

     added = new GInt(nReal, nImag); 

     return added; 
    } 
} 

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

  • Не используйте имена классов, которые начинаются со строчной буквы (например, gInt вместо GInt)
  • Конструкторы в Java не имеют возврата t Ype в Java, так что я удалил void типа в OP
  • Вам нужен оператор new, чтобы создать новый объект GInt в Java
+0

Вы ошибочно указали «GInt» как «Gnt» во втором конструкторе. –

3

Вы не указать тип возвращаемого на конструктор из вашего класс. Ваши конструкторы должны выглядеть следующим образом, вместо:

public gInt(int r) 
{ 
    imag=0; 
    real=r; 

} 

public gInt(int r, int i) 
{ 
    real=r; 
    imag=i; 

} 

Обратите внимание, как я удалил void перед именами методов.

При создании нового экземпляра класса, вы также должны использовать ключевое слово new:

added= new gInt(nReal,nImag); 

Для получения дополнительной информации о том, как создавать объекты в Java, have a look at the docs.

+0

@TimBiegeleisen Согласен. – Timo

0

построенная функция не может использовать void и использовать added = new gInt(nReal,nImag); возможно вам не нравится, что вы можете использовать added = new gInt.gInt(nReal,nImag); Gint является объектом, вам нужно создать, то вы можете использовать объект!

+0

Что добавляет = new gInt.gInt (nReal, nImag), 'mean? Это работает? – coderz