Понимание объектно-ориентированного присваивания при работе с методами
Я все еще плохо знаком с Java и пишу / читаю код, поэтому я не совсем уверен, чего хочет мой профессор. Все, что мне нужно, это какое-то подкрепление того, что я должен делать. Назначение выглядит следующим образом:
Укажите, а затем реализуйте метод (некоторого класса X), которому передается NumberList и который возвращает массив, содержащий значения из NumberList.
(NumberList не изменяется вашим методом. Ваш метод НЕ является членом NumberList. Вы не сможете протестировать свой метод, запустив его, поскольку я не предоставляю вам класс NumberList.)
Если вам это нужно, вот публичные методы. Единственный метод, который я использую:
public int size() //returns number of items in this NumberList
Итак, как я понимаю, все, что я делаю, это беру NumberList и создаю массив значений. Достаточно просто. Это обрабатывает работу, о которой спрашивают?
public double [] arrayNL(NumberList list){
//pre: NL is not empty
//post: array with NL values is returned
double [] arrayNL = new double [list.size()];
for(int x=0;x<list.size();x++){
arrayNL[x]=list.nextDouble;
}
return arrayNL;
}
Просто не уверен насчет list.size() и list.nextDouble... и это если я правильно понял проблему. На самом деле я не сделал достаточно объектного кодирования, чтобы быть знакомым / уверенным в этом, и я сильно полагаюсь на тестирование, поэтому я все ставлю под сомнение. Любая помощь была бы великолепна, у меня просто проблемы с выполнением инструкций этого профессора по какой-то причине.
3 ответа
Ваш код в основном весь там, хотя следующий класс не определен в классе NumberList, так что это может вызвать проблемы. Вот что делает каждая часть:
public double [] arrayNL(NumberList list){
// Initialize an array of doubles containing the same # of elements
// as the NumberList
double [] arrayNL = new double [list.size()];
// Iterate through the NumberList
for(int x=0;x<list.size();x+) {
// Copy the double from the NumberList object to the double array
// at the current index. Note "nextDouble" is undefined, but
// NumberList does have a method you can use instead.
arrayNL[x]=list.nextDouble;
}
// After iterating through the whole list, return the double array
return arrayNL;
}
Извините за любые вопросы форматирования. Напечатал это на моем телефоне
Я считаю, что одна из целей этого упражнения - научить читать API (интерфейс прикладных программ) и реализовывать его метод, просто читая документацию, не читая фактический код, стоящий за ним.
Это важная практика, поскольку в качестве будущего разработчика вам придется использовать методы других людей, и вы не сможете реализовать все самостоятельно.
Что касается вашего кода, я не уверен, где вы видели nextDouble
метод, как я не вижу в документации. Если это не было дано вам, я предлагаю вам придерживаться документации NumberList()
и другие основные функции кодирования.
Вместо того, чтобы использовать nextDouble
ты можешь использовать: public double get(int index)
Так что ваши for
цикл будет выглядеть примерно так:
for(int i = 0; i < list.size() ;i++){
arrayNL[i]= list.get(i);
}
Остальная часть вашего кода в основном в порядке.
Не уверен, что понимаю вопрос. Является ли целью написать код, который копирует список в массив, или реализовать методы класса NumberList на основе предварительных и постусловий?