Пользовательские функции в языке обработки

выполняю некоторую университетскую работу по языку программирования «Обработка» (разновидность java).

Итак, мой вопрос: 'Напишите функцию с именем twoNumbers(int a,int b), которая принимает два параметра a и b. Если a больше b, то два числа складываются, и в окне консоли отображается строка «сумма a и b равна сумме», где a и b и сумма — это значения a, b и их сумма. Наконец, функция должна вернуть сумму.'

.. так вот моя попытка кода, если я поставлю (int a, int b) после функции клиента, это просто говорит, что мой другой int a = число, является дубликатом, что верно, но я не уверен, как Я должен дать a и b номер, чтобы он не подумал, что это дубликат? Должен ли я помещать его из пустого тега настройки? поскольку я не уверен, что это вызовет слишком много скобок {...

/* Question 1 */

int twoNumbers(){
int a = 30;
int b = 20;
 if (a > b) {println(a+b);}
  println("The sum of a and b is sum");
  int sum;
  sum = a+b;
  println(sum);
}

Любая помощь будет очень полезна для решения этого и других вопросов :)

Спасибо!!


person Daniel Hobbs    schedule 07.11.2012    source источник
comment
Используйте сигнатуру метода, как в вашем задании: public static int twoNumbers(int a,int b) и не создавайте новые переменные с теми же именами. Просто используйте эти переменные. Также покажите нам свой основной метод, где вы вызываете этот метод.   -  person jlordo    schedule 07.11.2012


Ответы (2)


Также ваша функция не возвращает значение, что приведет к ошибке. Похоже, вы путаете вещи. Либо объявите его пустым, либо верните значение объявленного типа (последнее - это то, что требует ваше назначение). В любом случае для выполнения необходимо вызвать функцию или метод, а вы не вызываете ее! Таким образом, код внутри вашей функции не запускается!! Следующее:

void imAMethod()
{
  println("hello");
}

Это допустимый метод, но он ничего не сделает, вам нужно вызвать его, например:

imAMethod();// calling your method

void imAMethod()
{
  println("hello");
}

Но это также не сработает, выдаст ошибку "Похоже, вы смешиваете "активный" и "статический" режимы". Это потому, что для использования функции в Processing вам нужно иметь хотя бы метод setup() в скетче, поэтому:

 void setup()
{
  imAMethod();
}//end of setup

void imAMethod()
{
println("hello");
}

будет работать так, как ожидалось.

Но вам нужна функция, поэтому, как указал Джеспер, вам придется сделать что-то вроде:

int a = 30; // those are global variables to pass to your function
int b = 20;
void setup()// this is a builtin basic Processing method
 {
   //call your function 
   println("The sum of " + a + " and " + b + " is "+ twoNumbers(a, b));
 }

int twoNumbers(int a, int b)
{ 
//do your math and tests here
return result;
}

В задании непонятно другое. Функция должна что-то возвращать, поэтому неясно, что должна возвращать функция, если a не больше, чем b. Вам придется обработать этот случай, иначе компилятор будет жаловаться. Вы можете переместить этот тест из функции, чтобы упростить задачу, например:

if (a < b)
println("The sum of " + a + " and " + b + " is "+ twoNumbers(a, b));//call your function
else
println(a + " is smaller than " + b);

и в функции просто сделайте сумму. Но это может быть не то, что требует присваивание... В любом случае вам нужно будет что-то вернуть, даже если a не больше, чем b. Обратите внимание, что печать на консоль также может выполняться внутри функции.

Хммм, перечитывая задание, я думаю, что ожидается следующее: всегда возвращайте сумму и просто печатайте, если a больше, чем b, что имеет больше смысла и проще, что-то вроде:

int twoNUmbers(int a, int b)
{
 if (a < b){/*print the string*/}
 return a + b;
}

Просто записка для джлордо. В Processing.org у вас нет основного, или лучше, он прозрачен/скрыт от пользователя. Обработка похожа на «диалект» java. Таким образом, приведенный выше код будет работать как есть. Есть две основные встроенные функции: setup() и draw(). Если пользователь не использует ни один из них, IDE искажает его в функции setup(), которая вызовет main() в другом месте. Он будет запущен один раз. Draw() вместо этого зацикливается навсегда.

person v.k.    schedule 07.11.2012

'Напишите функцию twoNumbers(int a,int b), которая принимает два параметра a и b.

Ваш код выглядит не так. Ваш метод twoNumbers не принимает два параметра a и b. Ваш код должен начинаться так (именно так, как указано в задании):

int twoNumbers(int a, int b) {

Удалите следующие две строки, int a = 30; и int b = 20;. Эти строки объявляют две локальные переменные с именами a и b. Вместо этого вы должны использовать a и b, которые передаются в качестве параметров.

Это тоже выглядит неправильно:

if (a > b) {println(a+b);}
println("The sum of a and b is sum");

Внимательно посмотрите, что написано в задании:

Если a больше b, то два числа складываются, и в окне консоли отображается строка «сумма a и b равна сумме», где a и b и сумма — это значения a, b и их сумма.

Это не то, что делает ваш код. Делайте это шаг за шагом, тщательно продумывая, что имеется в виду в задании.

person Jesper    schedule 07.11.2012