如何使用数组输入调用方法

时间:2017-01-01 22:11:27

标签: java arrays

我有以下代码,其中包含设置和打印数组值的方法:

int n;

// this is a method for get and set value of array
public static int[] avali(int n) { 

    System.out.println("insert number");

    Scanner num = new Scanner(System.in);
    int a1[] = new int[n];
    for (int i = 0; i < n; i++) {

        a1[i] = num.nextInt();

    }

    return a1;
}

//method of inverse array
public void dovomi(int[] a) {

    for (int i = n; i > 0; i--) {

        System.out.println(a);
    }

 }

public static void main(String[] args) {
    System.out.println("insert arr size: ");
    Scanner n = new Scanner(System.in);
    JavaApplication17 x = new JavaApplication17();
    x.avali(n.nextInt());
    x.dovomi(a1);

}

如何使用数组作为参数调用此方法? 为什么我不能以这种方式访问​​a1

2 个答案:

答案 0 :(得分:0)

您的dovomi方法和main有一些错误,您必须纠正它们才能运行您的程序:

第二种方法应该是staticn变量也不是在方法范围内定义的,而是可以使用a.length来获取数组的大小:

   public static void dovomi(int[] a) {

    for (int i = a.length-1; i >= 0; i--) {

        System.out.println(a[i]);
    }
   }

main方法您还必须定义数组并将avali方法的返回数组放在其中以打印dovomi方法的结果:

 public static void main(String[] args) {
    System.out.println("insert arr size: ");
    Scanner n = new Scanner(System.in);
    int size = n.nextInt();
    int[] a1=new int[size];
    a1=avali(size);
    dovomi(a1);
}

答案 1 :(得分:0)

您需要了解返回值的概念。

有些方法不会返回任何值。它们标记为void。而其他人呢。他们被标记为他们返回的任何类型的价值。

不返回值的方法示例包括System.out.println()dovomimain等。

另一方面,n.nextInt确实返回一个值。

您能否看到n.scanSystem.out.println的使用方式有何不同?

x.avali(n.nextInt());
// vs
System.out.println("Hi");

n.nextInt()可以作为参数传递给方法,但System.out.println不能。为什么?因为n.nextInt() 返回值!基本上,返回值的方法可以用作值,因此您可以将它们作为参数传递,将它们分配给变量,调用其他方法......

现在为什么您无法访问a1

由于在a1范围内声明了avali,因此您无法在avali之外访问它。但是,a1返回avali

return a1;

因此,您可以创建一个新变量并将avali的返回值赋给它:

int[] a1 = x.avali(n.nextInt());

现在这行编译了!

x.dovomi(a1);