处理语言中的自定义函数

时间:2012-11-07 14:41:02

标签: java processing

对'Processing'编程语言(java的一种形式)做一些单一工作。

所以我的问题是'编写一个名为twoNumbers(int a,int b)的函数,它接受两个参数a和b。如果a大于b,则将两个数字相加,并且字符串'a和b的总和为sum'显示在控制台窗口中,其中a和b以及总和是a,b及其值的值和。最后,函数应返回总和。'

.. soo这里是我对代码的尝试,如果我把(int a,int b)放在客户函数之后,它只是说我的其他int a = number,是重复的,这是真的,但我是不知道如果没有它认为它是重复的话我怎么给a和ba号?我应该将它从空白设置标签中删除吗?我不确定这是否会导致太多{括号......

/* 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);
}

任何帮助对于解决这个问题和其他问题都会非常有帮助:)

谢谢!

2 个答案:

答案 0 :(得分:2)

此外,您的函数未返回值,这会给您一个错误。看起来你很混乱。声明它为void或返回声明类型的值(最后一个是你的赋值所要求的)。无论哪种方式,都需要调用函数或方法来执行,而不是调用它!所以函数里面的代码没有被运行!! 以下内容:

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

这是一种有效的方法,但不会做任何事情,你需要调用它,如:

imAMethod();// calling your method

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

但这也行不通,会给你错误“看起来你正在混合”主动“和”静态“模式”。那是因为要在Processing中使用一个函数,你需要在草图中至少有一个setup()方法,所以:

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

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

将按预期工作。

但是你需要一个函数,所以Jesper指出你必须做类似的事情:

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 ,你也需要返回一些东西。请注意,打印到控制台也可以在函数内部完成。

Hummm,重新阅读作业,想一想预期的是:总是返回总和,只要打印 a 大于 b ,这就更有意义了更容易,比如:

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

只是jlordo的注释。在Processing.org中,您没有主要内容,或者更好,它对用户来说是透明/隐藏的。处理就像java的“方言”。所以上面的代码会按原样运行。有两个基本的内置函数:setup()和draw()。如果用户不使用它们,则IDE将在setup()函数中对其进行扭曲,这将在其他位置调用main()。它将运行一次。 Draw()反而永远循环。

答案 1 :(得分:1)

  

'编写一个名为twoNumbers(int a,int b)的函数,它接受两个参数a和b。

这不是你的代码的样子。您的方法twoNumbers不会使用两个参数ab。您的代码应该像这样开始(完全如赋值中所述):

int twoNumbers(int a, int b) {

删除接下来的两行int a = 30;int b = 20;。这些行声明了两个名为ab的局部变量。您应该使用作为参数传入的ab

这看起来也错了:

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

仔细看看作业的内容:

  

如果a大于b,则两个数字相加,字符串'a和b的总和为sum'显示在控制台窗口中,其中a和b以及总和是a的值, b和他们的总和。

这不是你的代码正在做的事情。一步一步地,仔细考虑作业中的含义。