java 一个调用小问题
来源:百度知道 编辑:UC知道 时间:2024/09/20 17:53:02
public class abig
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int aa;
int[] a;
aa = sc.nextInt();
for(int i = 0; i < aa; i++)
a[i] = sc.nextInt();
sorta(a,aa);
public void sorta(int[] v,int n)
{
int gap;
for(gap = n/2; gap > 0; gap /= 2)
{
for(int i = gap; i < n; i++)
{
for(int j = i - gap; j >= 0 && v[j] > v[j+gap]; j -= gap)
{
int temp = v[j];
v[j] = v[j+gap];
v[j+gap] = temp;
}
}
}
}
}
}
abig.java:17: 非法的表达式开始
public void sorta(int[] v,int n)
^
abig.java:17: 非法的表达式开始
public void sorta(int[] v,int n)
^
abig.java:17: 需要 ';'
我给你修改了,代码如下:
public class abig {
public void sorta(int[] v, int n) {
int gap;
for (gap = n / 2; gap > 0; gap /= 2) {
for (int i = gap; i < n; i++)
{
for (int j = i - gap; j >= 0 && v[j] > v[j + gap]; j -= gap) {
int temp = v[j];
v[j] = v[j + gap];
v[j + gap] = temp;
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int aa;
int[] a;
aa = sc.nextInt();
for (int i = 0; i < aa; i++)
a[i] = sc.nextInt();
sc.sorta(a, aa);
}
}
错误原因:
1.main方法调用的本类方法,成员方法应该写在main的外部!方法里面一般不会出现public static void sorta(int[] v, int n) 这种写法的方法的,你可以直接实现在main方法里面-----不过为了可重用性,还是写作成员方法吧。
2.main方法里面实现了Scanner对象,就直接用sc.sorta(a, aa);调用它的方法,如果不创建Scanner对象,那么sorta方法必须定义为静态的,如:public static void sorta(int[] v, int n) ,因为main是静态的,静态方法只能调用静态方法。