无法在同一个java类中调用方法

时间:2016-10-02 12:38:24

标签: java arraylist methods

我已经很久没写过java了,我知道我的问题很简单,但我不能为我的生活找出错误。

我正在尝试使用以下代码找到数组中的最小数字。该算法是正确的,但我在最后一个打印语句中尝试使用它时出现错误

package runtime;

import java.util.ArrayList;

public class app {


/**
 * @param args the command line arguments
 */

public int findSmallElement(ArrayList<Integer> num)
{
    int smElement; 
    smElement= num.get(0);
    for(int i=0; i<num.size() ; i++)
        if(num.get(i) < smElement)
            smElement=num.get(i);
    return smElement;
 }

public static void main(String[] args) {


    ArrayList<Object> num = new ArrayList<Object>();



    num.add(100);
    num.add(80);
    num.add(40);
    num.add(20);
    num.add(60);

    System.out.println("The size of the list is " +num.size());
    System.out.println(num.findSmallElement());

}

}

4 个答案:

答案 0 :(得分:1)

你试图在没有这个方法的ArrayList变量/对象上调用你的方法,而是想要在你自己的类的实例上调用它。您应该将数组列表传递给此方法。

另一种选择是让你的方法保持静态,只需单独调用它,再次传入arraylist。

//  add the static modifier
public static int findSmallElement(ArrayList<Integer> num)

然后打电话给:

// pass the ArrayList into your findSmallElement method call
int smallestElement = findSmallElement(num);
// display the result:
System.out.println("smallest element: " + smallestElement);

答案 1 :(得分:1)

ArrayList 拥有findSmallElement方法。制作方法static并将其称为num,如

System.out.println(findSmallElement(num));

public static int findSmallElement(ArrayList<Integer> num)

答案 2 :(得分:1)

与其他所有其他方法一样,您可以创建一个对象并通过它调用它,而不是让您的方法成为静态,我觉得这样更方便

App app = new App();
int smallestElement = app.findSmallElement(sum);
System.out.println("smallest element: " + smallestElement);

我不太确定,但我认为这很有效。

答案 3 :(得分:0)

static上下文调用时,应调用另一个static

所以只需将你的功能改为static,如:

public static int findSmallElement(ArrayList<Integer> num){...}

提示:尝试查看当您尝试使用非静态函数的全局静态变量时发生的情况。