输入数字列表和 'void' 此处不允许输入
input a list of numbers and 'void' type not allowed here
下面是我的初步脚本。
public class Insertion
{
public static void sort(double[] a)
{
int N = a.length;
for (int i=1; i<N; i++)
{
for (int j = i; j>0; j--)
{
if (a[j-1] > a[j])
exch(a, j-1, j);
else break;
}
}
}
public static void exch(double[] a, int i, int j)
{
double swap = a[i];
a[i] = a[j];
a[j] = swap;
}
public static void main(String[] args)
{
double[] a = {5, 2, 4, 1}; //eventually wanna be able to input this in interactions
System.out.println(a[1]); //just trying to figure out what's going on here
System.out.println(a.length);
System.out.println(sort(a));
}
}
如果我 运行 它,我会收到 System.out.println(sort(a));
的以下错误消息
Error: 'void' type not allowed here
所以我有两个问题:
不允许无效是什么意思,您如何解决这个问题?
你可能已经注意到了,我手打的是 double []a
,因为我仍然无法弄清楚在执行 [=42= 时如何输入数字列表] 脚本。
编辑:
这是在我进行了推荐给我的更改之后
public class Insertion
{
public static double[] sort(double[] a)
{
int N = a.length;
for (int i=1; i<N; i++)
{
for (int j = i; j>0; j--)
{
if (a[j-1] > a[j])
exch(a, j-1, j);
else break;
}
}
return a;
}
public static void exch(double[] a, int i, int j)
{
double swap = a[i];
a[i] = a[j];
a[j] = swap;
}
public static void main(String[] args)
{
double[] a = {5, 2, 4, 1};
System.out.println(a);
//System.out.println(sort(a));
// sort(a);
System.out.println(sort(a));
}
}
作为上面编写的脚本的输出,我得到以下内容 [D@3e9af3ee
因为方法 sort(a)
没有 return 任何东西 你不能做 System.out.println(sort(a));
println 函数获取的参数是什么?
您的方法没有 return 状态 public static void sort(double[] a)
,因此您无法打印 System.out.println(sort(a));
。
试着改成这样:
public static double[] sort(double[] a){
...
return a;
}
在 main 方法中执行此操作以迭代数组:
for(double db: sort(a)){
System.out.println(db);
}
sort
方法的return类型是void
,也就是说"nothing".
System.out.println(sort(a));
- 在这里您要求打印一个值 return 通过调用 sort(a)
编辑,这是 void
并且不允许。那是错误 - 你无法打印出 "nothing".
将 sort
方法的 return 类型更改为 double[]
和 return a
从 sort
方法或将调用拆分为sort
如下 -
sort(a);
System.out.println(a);
下面是我的初步脚本。
public class Insertion
{
public static void sort(double[] a)
{
int N = a.length;
for (int i=1; i<N; i++)
{
for (int j = i; j>0; j--)
{
if (a[j-1] > a[j])
exch(a, j-1, j);
else break;
}
}
}
public static void exch(double[] a, int i, int j)
{
double swap = a[i];
a[i] = a[j];
a[j] = swap;
}
public static void main(String[] args)
{
double[] a = {5, 2, 4, 1}; //eventually wanna be able to input this in interactions
System.out.println(a[1]); //just trying to figure out what's going on here
System.out.println(a.length);
System.out.println(sort(a));
}
}
如果我 运行 它,我会收到 System.out.println(sort(a));
Error: 'void' type not allowed here
所以我有两个问题:
不允许无效是什么意思,您如何解决这个问题?
你可能已经注意到了,我手打的是
double []a
,因为我仍然无法弄清楚在执行 [=42= 时如何输入数字列表] 脚本。
编辑:
这是在我进行了推荐给我的更改之后
public class Insertion
{
public static double[] sort(double[] a)
{
int N = a.length;
for (int i=1; i<N; i++)
{
for (int j = i; j>0; j--)
{
if (a[j-1] > a[j])
exch(a, j-1, j);
else break;
}
}
return a;
}
public static void exch(double[] a, int i, int j)
{
double swap = a[i];
a[i] = a[j];
a[j] = swap;
}
public static void main(String[] args)
{
double[] a = {5, 2, 4, 1};
System.out.println(a);
//System.out.println(sort(a));
// sort(a);
System.out.println(sort(a));
}
}
作为上面编写的脚本的输出,我得到以下内容 [D@3e9af3ee
因为方法 sort(a)
没有 return 任何东西 你不能做 System.out.println(sort(a));
println 函数获取的参数是什么?
您的方法没有 return 状态 public static void sort(double[] a)
,因此您无法打印 System.out.println(sort(a));
。
试着改成这样:
public static double[] sort(double[] a){
...
return a;
}
在 main 方法中执行此操作以迭代数组:
for(double db: sort(a)){
System.out.println(db);
}
sort
方法的return类型是void
,也就是说"nothing".
System.out.println(sort(a));
- 在这里您要求打印一个值 return 通过调用 sort(a)
编辑,这是 void
并且不允许。那是错误 - 你无法打印出 "nothing".
将 sort
方法的 return 类型更改为 double[]
和 return a
从 sort
方法或将调用拆分为sort
如下 -
sort(a);
System.out.println(a);