【发布时间】:2014-03-23 17:40:28
【问题描述】:
我正在学习 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();
}
}
我得到的错误是:
Assignment1.java:82: error: '.class' expected
a.sort(array[]);
我知道这是一些基本的东西让我难以捉摸,但基本的东西是最模糊的......
【问题讨论】:
-
只是没有[]的数组
-
@SotiriosDelimanolis,讽刺和批评是没有帮助的。在这里让他知道他错了,而不是批评。
-
@ylun Sotirios Delimanolis 的问题是有效且值得的。如果 OP 反映并回答它们,他可以自己得出结论。
-
我实际上首先将它作为(数组)。我只是更改了它,因为我在运行程序时遇到了错误。因此,在固定(数组)后,我在 Assignment1.merges(Assignment1.java:24)处的 Assignment1.merge(Assignment1.java:39)处的线程“main”java.lang.ArrayIndexOutOfBoundsException:5 处得到一个异常。 Assignment1.java:23) 在 Assignment1.sort(Assignment1.java:14) 在 Assignment1.main(Assignment1.java:82)
-
@ShengLong916 在尝试调试您的新问题后,您可能希望打开一个专门针对它的新问题,而不是在这里一概而论。
ArrayIndexOutOfBoundsException表示它所说的内容,您应该搜索数组索引可能超出范围的可能位置。临时打印输出和单步调试调试器(如果有可用的调试器)可以帮助快速解决此类问题。
标签: java arrays parameter-passing