She*_*916 5 java arrays parameter-passing
我正在上一门java课,但已经离开了一段时间.
试图让这个排序程序工作:
import java.util.*;
public class Assignment1
{
private int[] nums;
private int[] ast;
private int n;
public void sort(int[] vals)
{
this.nums = vals;
n = vals.length;
this.ast = new int[n];
merges(0, n - 1);
}
private void merges(int bot, int top)
{
if (bot < top)
{
int mid = bot + (top - bot) / 2;
merges(bot, mid);
merges(mid + 1, top);
merge(bot, mid, top);
}
}
private void merge(int bot, int mid, int top)
{
for (int i = bot; i <= top; i++)
{
ast[i] = nums[i];
}
int i = bot;
int j = mid + 1;
int k = bot;
while (i <= mid && i <= top)
{
if (ast[i] <= ast[j])
{
nums[k] = ast[i];
i++;
}
else
{
nums[k] = ast[j];
j++;
}
k++;
}
while (i <= mid)
{
nums[k] = ast[i];
k++;
i++;
}
}
private void show()
{
System.out.print("Sorted Array: ");
for(int l=0;l<nums.length;l++)
{
System.out.print(nums[l] + " ");
}
}
public static void main(String[] args)
{
Assignment1 a = new Assignment1();
Scanner scan = new Scanner(System.in);
System.out.print("\nArray Size: ");
int s = scan.nextInt();
int[] array = new int[s];
for(int x=0;x<s;x++)
{
System.out.print("Enter Element " + (x + 1) + ":");
array[x] = scan.nextInt();
}
a.sort(array[]);
a.show();
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是这样的:
Assignment1.java:82: error: '.class' expected
a.sort(array[]);
Run Code Online (Sandbox Code Playgroud)
我知道这是基本的东西,但最基本的东西是最朦胧的......
我相信编译器认为你试图传入一个类类型,sort因为你[]在调用中添加了after数组,sort这就是你声明数组类型的方式.
只是改变
a.sort(array[])
Run Code Online (Sandbox Code Playgroud)
至
a.sort(array)
Run Code Online (Sandbox Code Playgroud)
因为您已经在方法中早先初始化array为int[]类型/数组.
您只需要[]在初始化期间添加.之后,引用数组的变量名称就像任何其他变量的变量名称一样.