2016-01-11 1 views
0

У меня есть объект Fraction, который я определил в классе java. Мне нужно уметь делать математику с фракциями, которые я создаю. Когда я делаю математику с неопределенной дробью, я должен вернуть null. Моя проблема заключается в том, что пользователь не знает, что null был возвращен и пытается выполнить математику с объектом Fraction, для которого установлено значение null.NullPointerException при вызове оператора

Например.

Fraction f1=null; 
Fraction f2=new Fraction(1, 2); 
Fraction f3=f1.add(f2); 

Это даст мне ошибку. Но когда я делаю это наоборот, ошибок нет.

Fraction f1=null; 
Fraction f2=new Fraction(1, 2); 
Fraction f3=f2.add(f1); 

Эта ошибка не будет и вместо этого вернет значение null.

Почему ошибка верхнего примера и как заставить его вместо этого возвращать null? Кроме того, проверка, если фракция равна нулю, не может произойти в моей программе тестера, она должна произойти в классе Fraction. Оператор добавления работает просто отлично. Я просто хочу, чтобы он возвращал значение null, когда объект Fractions равен нулю.

+2

верхний пример не работает, потому что 'f1' имеет значение null, и вы не можете вызвать функцию с нулевым значением. Что вы можете сделать, это заменить вашу функцию статической функцией, которая проверяет оба операнда. – njzk2

+0

Вы не можете. Вызов метода по нулевой ссылке является ошибкой и всегда приведет к NPE. –

+0

Вы хотите, чтобы фракция f3 возвращала значение null во втором примере? – Scitech

ответ

2

Вызов метода на объекте null, всегда будет заканчиваться NullPointerException.

4

То, что вы пытаетесь сделать, невозможно, потому что вы не можете вызвать метод на объекте null. Попытка его всегда будет давать и исключение. Однако, если это действительно важно для вас, вы можете изменить API на статический метод с двумя параметрами:

public static Fraction add(Fraction f1, Fraction f2) 

Теперь вы можете вернуться null в случае, если один из параметров null.

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

  • Нет связанных вопросов^_^