Как сказал @KyssTao, help(dates.num2date)
говорит, что x
должен быть float, дающим число дней с 0001-01-01 плюс один. Следовательно, 19910102
не 2 / янв / 1991, потому что, если вы посчитали 19910101 дней с 0001-01-01, вы получите что-то в год 54513 или подобное (разделите на 365,25, количество дней в году).
Вместо этого используйте datestr2num
(см. help(dates.datestr2num)
):
new_x = dates.datestr2num(date) # where date is '01/02/1991'
Рассмотрим эти две строки из main
, например:
System.out.println(" Closing price: " + s2.setClosingPrice(close));
System.out.println(" Current price: " + s2.setCurrentPrice(price));
Вы имеете в виду две переменные, close
и price
.
Ни один из них не объявлен в main
.
Ни одна из них не объявлена как переменная-член класса Stock
.
Короче говоря, они не существуют ни в одном применимом объеме. Возможно, вы использовали похожие имена для нескольких методов, но они не являются именами, доступными там, где вы их сейчас используете.
Я думаю, вы не понимаете, как работает передача параметров. Например, если я объявляю метод:
void myMethod(int fubar) { ... }
, а затем вызываю его так:
myMethod(42);
, то в этом конкретном вызове myMethod
переменная fubar
будет иметь значение 42. Точно так же, если я назову это так:
int xyz = 1 + 2 + 3;
myMethod(xyz);
в этом вызове myMethod
, fubar
равно 6. Все, что я пытаюсь здесь сказать, это то, что fubar
- это переменная, которая получит значение от звонка; имя не доступно автоматически нигде вне метода, который его определяет, и вы также не обязаны использовать это имя.
Ваш объект Stock принимает String в качестве первого и второго входных данных:
Stock(String s, String n, double previousClosingPrice, double currentPrice)
В текущем состоянии вы не предоставляете ему String (я полагаю, опечатка, вы забыли двойные кавычки), поэтому измените ваши строки на:
Stock s1 = new Stock("GOG", "Google", 134.67, 131.98);
Stock s2 = new Stock("MSF", "Microsoft", 156.52, 161.22);
То для первой части сообщения об ошибке.
Следующая проблема, с которой вы столкнулись, заключается в том, что в вашем методе currentPrice () есть опечатка - я предполагаю, что она должна быть setCurrentPrice
.
Далее: в вашем toString () отсутствует оператор возврата.
Далее: ваши переменные, которые вы используете, такие как close
, price
, change
, нигде не установлены. Вам нужно установить их где-нибудь, прежде чем использовать их в качестве ввода параметров.