[英]Passing an array as a parameter to a method
这是我完成的程序:
import java.util.*;
public class Sclad {
public static void vavediMasiv(int col[], double cenaE[], double cenaD[]){
Scanner sc = new Scanner(System.in);
for (int i = 1; i < col.length; i++)
{
System.out.println("Molq vuvedete kolichestvoto ot produkt nomer " + i);
col[i] = sc.nextInt();
System.out.println("Kolichestvoto na produkta zadadeno kato: " + col[i]);
}
for (int i = 1; i < cenaE.length; i++)
{
System.out.println("Molq vuvedete cenata na edro na produkt nomer " + i);
cenaE[i] = sc.nextDouble();
System.out.println("Cenata na produkta na edro zadadeno kato: " + cenaE[i]);
}
for (int i = 1; i < cenaD.length; i++)
{
System.out.println("Molq vuvedete cenata na drebno na produkt " + i);
cenaD[i] = sc.nextDouble();
System.out.println("Cenata na produkta na drebno zadadeno kato: " + cenaD[i]);
}
}
public static void calcPechalba(){
for (int i = 1; i < col.length; i++)
System.out.println("KUR");
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("Vavedete broi na stokite prisustvashti v sklada...");
int m = sc.nextInt();
System.out.println("Vie izbrahte " + m + " za kolichestvo na stokite.");
int col[] = new int[m+1];
double cenaE[] = new double[m+1];
double cenaD[] = new double[m+1];
vavediMasiv(col[m+1], cenaE[m+1], cenaD[m+1]); // I GET AN ERROR HERE SAYING The method vavediMasiv(int[], double[], double[]) in the type Sclad is not applicable for the arguments (int, double, double)
}
}
我已经评论了有问题的部分。 我不明白为什么它不接受作为参数。 我已经尝试了所有方法,但仍然无法接受数组。 我可以做些什么来解决此问题,或者至少可以妥协并以其他方式解决?
您正在传递它的int和double值。 要将其传递给int和double数组,您需要执行以下操作:
vavediMasiv(col, cenaE, cenaD);
例如,在这里向其传递cenaD数组的m + 1元素,而不是数组本身。
cenaD[m+1]
看...您已定义
public static void vavediMasiv(int col[], double cenaE[], double cenaD[]) // expecting and accepting whole arrays as arguments.
而您正在使用:
vavediMasiv(col[m+1], cenaE[m+1], cenaD[m+1]); // you are passing individual values of arrays instead of whole array.
您必须使用:
vavediMasiv(col, cenaE, cenaD);
你应该通过整个对象
vavediMasiv(col, cenaE, cenaD);
您在数组中而不是实际数组中传递值。 这就是为什么您将错误int cant be converted to int[]
原因,因为col[m +1]
是col
数组中的int
值。 与其他两个数组相同。
vavediMasiv(col[m+1], cenaE[m+1], cenaD[m+1])
所有上述都在数组中的值。 你要
vavediMasiv(col, cenaE, cenaD);
您可能还希望将数组传递给此方法,以消除此错误
public static void calcPechalba(int[] col){ <------
for (int i = 1; i < col.length; i++)
System.out.println("KUR");
}
您正在尝试将( int
double
double
)参数传递给签名表示该方法接受( int
double
double
)数组的方法。
查看您的源代码,您只需要更改
vavediMasiv(col[m+1], cenaE[m+1], cenaD[m+1]);
拨电至:
vavediMasiv(col, cenaE, cenaD);
您还应注意,由于没有局部变量col
,因此以下方法将无法编译:
public static void calcPechalba(){
for (int i = 1; i < col.length; i++)
System.out.println("KUR");
}
抱歉,我无法理解您的方法的逻辑流程以提供更好的帮助。
BR。
您的方法vavediMasiv(int col [],double cenaE [],double cenaD [])期望使用int array,double array和double array类型的三个参数。 在传递int时,将double和double用作参数。 这就是为什么它会出错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.