【问题标题】:create a method that can count negative numbers in an array创建一个可以对数组中的负数进行计数的方法
【发布时间】:2012-09-28 07:33:06
【问题描述】:
public class negativeTest {

    public static int Negativenum (int[] array) {

        int negative = 0;
        for (int i = 0; i < array.length; i++){
            if(array[i] < 0){
                negative = negative + 1;
            }
            System.out.println(negative);

        }

    }

}

我试图计算数组中有多少元素是负数。这就是我到目前为止所拥有的。我的问题是:eclipse 告诉我应该返回一个 void 而不是 static int?我如何在不使用 void 的情况下做到这一点?

我想用

public static int negativenum(int[] array){

我可以让这个工作的唯一方法是创建一个包含正数和负数的数组并计算它们,但我希望能够有一种方法来做到这一点而无需创建数字数组。你能帮帮我吗?

【问题讨论】:

  • 也许它在抱怨,因为你没有返回任何东西。

标签: java arrays count negative-number


【解决方案1】:

尝试给出一个 return 语句,你的方法期望一个 int 作为返回参数。 因此它会给出编译错误。

public class negativeTest {

    public static int Negativenum (int[] array) {

        int negative = 0;
        for (int i = 0; i < array.length; i++){
            if(array[i] < 0){
                negative = negative + 1;
            }
            System.out.println(negative);

        }
      return negative;
    }

}

你得到的另一个错误是因为你没有在类中声明 main 函数。

你必须从主函数调用Negativenum

你可以这样做:

 public static void main (String args[])
 {
 negativeTest  nt = new negativeTest();
 int [] array = new int[]{ 100,200 };  
 int count = nt.Negativenum(array);
 System.out.println(count);  // It will print **2** 
 }

关于您在 cmets 中提出的疑问。

只有当你想使用调用函数的返回值时,你才必须从函数返回任何东西。 否则,如果您只想在控制台上打印该值或记录该值,您可以在negativeTest函数中轻松完成,并且可以将此函数的返回类型更改为void。

仅供参考,您的班级名称不应以小写字符开头。

【讨论】:

  • 请添加解释以使答案具有相关性。
  • 所以如果我返回负数,我可能不需要打印语句然后我接受它?你的意思是当你有一个返回类型 int public static "return type"negativeNum (int[] array) 你必须返回你在返回方法标题中指定的时间,对吗?
  • 否则如果你使用 void 你就不必了?
  • 当我运行时出现错误提示:错误:在负测试类中找不到主要方法,请将主要方法定义为:public static void main(String[] args)
  • 你必须返回你在方法声明中声明的相同类型的变量。
【解决方案2】:

该错误是因为您没有从预期返回 int 的函数返回任何内容。

如果想让函数统计负数个数并返回计数,以便函数的调用者得到计数,可以加一个

return negative;

函数结束前。

或者,如果您不想从函数返回任何内容,并且只想在函数调用中打印计数,您可以将函数的返回类型从 int 更改为 void

public static void Negativenum (int[] array) {

【讨论】:

    【解决方案3】:

    您的函数签名建议返回类型为 int,但您没有从该函数返回任何内容。我怀疑这就是 Eclipse 建议您更改函数签名以返回 void 的原因。

    如果你添加return negative;,它应该避免来自Eclipse的通知。

    如果您的意图是简单地打印计数,那么您应该更改返回类型。

    【讨论】:

    • 谢谢我试试,所以这个方法会像我想要的那样工作吗?
    • 我不会建议他在不知道他首先想要返回什么(如果有的话)的情况下返回任何东西。
    • 你有一个轻微的范围问题;您将继续打印数组中每个项目的计数,因为您的 println 位于 for 循环的主体中。除此之外(以及返回类型不匹配),它看起来还可以。
    • 当我运行时,我得到一个错误提示:错误:在负测试类中找不到主要方法,请将主要方法定义为:public static void main(String[] args) – PHZE OXIDE跨度>
    • 那是因为你没有返回任何东西;将函数签名更改为public static void Negativenum(int[] array) { 即可。
    【解决方案4】:

    如果您不想返回任何内容,请将您的方法签名设置为 void,但添加一个 out 变量,如下所示:

    public static void NegativeNum(int[] array, out int negative)
    {
         negative = 0;
         foreach(int i in array) { if (i < 0) negative++;
    }
    

    那么你只要在调用这个方法的地方声明为负数,并将它作为一个输出变量传入:

    int negative = 0;
    NegativeNum(array, out negative);
    

    调用之后,negative 将包含由方法确定的负数的计数。

    【讨论】:

    • 如果我只想使用 static int .. 如何在这段代码中使用 return 语句?我不想使用 void。
    • 您的代码无法在 Java 中编译。重要教训:Java 从不通过引用传递,只通过值传递。
    • 如果你想实际返回值,首先将返回类型声明为int而不是void,然后一旦你的计数最终确定,只需将它与“return count;”一起返回。线。如果你有 if 子句、switch 子句、try catch 子句,那么这些子句类型中的每一个的每个分支都必须返回一些东西,否则你会得到一个编译器错误。即使你返回零或 -1,你也必须返回一些东西。您调用此方法的代码可以有逻辑来查找 -1 返回以了解该方法有错误或其他情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多