我有以下代码,其中包含设置和打印数组值的方法:
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
?
答案 0 :(得分:0)
您的dovomi
方法和main
有一些错误,您必须纠正它们才能运行您的程序:
第二种方法应该是static
,n
变量也不是在方法范围内定义的,而是可以使用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()
,dovomi
,main
等。
另一方面,n.nextInt
确实返回一个值。
您能否看到n.scan
与System.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);